2013-09-19 3 views
4

EDIT Я нашел ответ и разместил ниже. Единственная причина, по которой я думал, что он работает в математическом режиме, состоял в том, что я приводил пример и никогда не видел, чтобы аргумент sanitize-text-function передавался методу печати. Я приму этот ответ, когда он станет доступен.Невозможно получить функцию дезинфекции текста для работы в xtable, если нет в математическом режиме

Я набираю манускрипт и делаю анализ данных для него. В этом анализе я генерирую таблицу 1 и смотрю на то, что в таблице есть некоторые имена строк, чтобы дать ей каскадное ощущение.

Пример данных у меня есть:

require(xtable) 
data <- data.frame(
    'case'=sample(c('case', 'control'), 100, replace=TRUE), 
    'age'=sample(c('40-50,', '50-60', '60-70'), 100, replace=TRUE), 
    'sex'=sample(c('male', 'female'), 100, replace=TRUE), 
    'income'=sample(c('under 50,000', '50-100,000', 'over 10000'), 100, replace=TRUE) 
) 

tables <- lapply(data[, -1], table, data[, 1]) 
tables <- lapply(tables, function(x) { 
    rownames(x) <- paste('\\hspace{5mm}', rownames(x)) 
    x 
}) 
tablenames <- names(tables) 
tables <- Reduce(rbind, mapply(rbind, '', tables)) 
rownames(tables)[rownames(tables) == ''] <- tablenames 

xtable(tables) 

xtable(tables, type='latex', sanitize.text.function=identity) 

Я понимаю, что последние две xtable команды должны возвращать различные таблицы. Я использую самую последнюю версию R и xtable.

ответ

6

Welp ... По-видимому, sanitize.text.function является аргументом print.xtable, а не xtable. Ведение

print(xtable(tables), type='latex', sanitize.text.function=identity)

решает эту проблему.