我正在用rmarkdown和latex工作。我需要使用knitr::kable
打印一组表格,但是在for循环中不打印。
这是我的代码:
---
title: "project title"
author: "Mr. Author"
date: "2016-08-30"
output:
pdf_document:
latex_engine: xelatex
bibliography: biblio.bib
header-includes:
- \usepackage{tcolorbox}
---
Text and chunks that run ok.
```{r loadLibraries}
require(data.table)
require(knitr)
```
## Try to print a group of tables from split
```{r results = "asis"}
t1 <- data.table(a = sample(letters, 10, T), b = sample(LETTERS[1:3], 10, T))
t2 <- split(t1, t1$b)
for (i in 1:length(t2)){
kable(t2[[i]], col.names = c("A", "B"))
}
```
如果我使用results = "asis"
或者我完全省略它,没有打印到文档,则无关紧要。
我已尝试在kable
调用(print
)中附加print(kable(t2[[i]]...
调用,并成功将输出打印到文档,但格式与a {标准的R提示符(例如前面有##
),这是相当丑陋的。
如何手动显示表格?
###编辑###
有些回答者已将我重定向到R knitr print in a loop作为重复答案。 它不是,因为正如我在前一段中所述,这有效地打印了表格,但格式不是预期的。接受的答案(以及相关的github线程)确实解决了这个问题。
答案 0 :(得分:10)
这个问题在这里得到解决:https://github.com/yihui/knitr/issues/886
您需要的是每次打印电话后的换行符
---
title: "project title"
author: "Mr. Author"
date: "2016-08-30"
output:
pdf_document:
latex_engine: xelatex
bibliography: biblio.bib
header-includes:
- \usepackage{tcolorbox}
---
Text and chunks that run ok.
```{r loadLibraries}
require(data.table)
require(knitr)
```
```{r results = "asis"}
t1 <- data.table(a = sample(letters, 10, T), b = sample(LETTERS[1:3], 10, T))
t2 <- split(t1, t1$b)
for (i in 1:length(t2)){
print(kable(t2[[i]], col.names = c("A", "B")))
cat("\n")
}
```