我正在编写一个 knitr 文档,使用 xtable 来获取我的表格。Xtable 默认插入一条注释:
"latex table generated in R 3.1.0 by stable 1.7-3 package % Thu Sep 18 14:19:21 2014"
该文本显然在 xtable 的输出中被 % 符号注释掉了,但 knitr 似乎通过在其前插入转义字符“\”来清理 %,然后被 pdfLatex 拾取,得到以下文本:
% latex table generated in R 3.1.0 by xtable 1.7-3 package % Thu Sep 18 14:19:21 2014
我可以阻止 knitr 或 xtable 执行此操作吗?
编辑:这是一个示例文档。
---
title: "knitr document"
output:
pdf_document:
keep_tex: yes
number_sections: yes
toc: yes
---
```{r load_packages,echo=FALSE,include=FALSE,results='hide',cache=TRUE}
library(xtable)
```
```{r prepare_table,echo=FALSE,results='hide'}
table <- cbind(c(1,2,3,4),c(1,2,3,4))
colnames(table) <- c("var1","var2")
```
```{r print_table,echo=FALSE,results='asis'}
print(xtable(table,include.colnames=TRUE))
```
答案1
感谢@Tyler,我浏览了 knitr 问题页面,发现 xtable 有一个参数可以隐藏评论(为此向 Tyler 点赞)。这个参数有点难用,因为你必须将参数传递给 xtable 的 print 方法。解决我的问题的代码如下:
print(xtable(table,include.colnames=TRUE),comment=FALSE)
答案2
我们可以通过设置一个xtable
选项来永久解决这个问题:
options(xtable.comment = FALSE)
参见?print.xtable
;由于comment
参数默认为getOption("xtable.comment", TRUE)
,因此对print.xtable
都将排除注释。微软建议永久地执行此操作。
答案3
这是一个 xtable 问题:xtable 是为在 LaTeX 源文档中使用而设计的,而当您尝试在 Markdown 文档中使用它时,注释的格式在从 Md -> pandoc -> LaTeX -> pdf 传递时变得难以控制。关于knitr 问题页面kable。Knitr 现在包含处理简单表格的功能。或者,您可以使用包装器从 xtable 中删除注释:
tyxtable <- function(x, trim = 2) {
tmp <- textConnection(capture.output(xtable(x), file = NULL))
tmp <- readLines(tmp)
tmp <- tmp[-1:(-1 * trim)]
writeLines(tmp)
}