不在数学模式下,无法在xtable中使用清理文本功能

时间:2013-09-19 17:55:49

标签: r latex xtable

编辑我找到了答案并发布在下面。我认为它在数学模式下工作的唯一原因是因为我正在运行一个例子而且从未看到sanitize-text-function参数被传递给print方法。一旦可用,我会接受这个答案。

我正在排版手稿并对其进行数据分析。在这个分析中,我正在生成一个表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。

1 个答案:

答案 0 :(得分:11)

Welp ......显然,sanitize.text.functionprint.xtable的参数,而不是xtable本身。做

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

解决了这个问题。