R:为什么kable不能在for循环中打印?

Pav*_*ive 10 latex r knitr

我正在用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"))
}
```
Run Code Online (Sandbox Code Playgroud)

如果我使用results = "asis"或者如果我完全省略它没关系,则没有任何内容打印到文档.

我已经尝试kable在printcall(print(kable(t2[[i]]...)中包含调用,并且它成功地将输出打印到文档,但格式与标准R提示符(##例如前面的格式)相同,这相当丑陋.

除手动外,如何显示表格?

### EDIT ###

一些回答者将我重新定向到循环中的R knitr打印作为重复答案.它不是,因为正如我在前一段中所述,这有效地打印了表格,但格式不是预期的格式.接受的答案(和相关的github线程)真正解决了这个问题.

Chr*_*sss 12

这个问题在这里解决: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")
}
```
Run Code Online (Sandbox Code Playgroud)

  • 我不知道2014年的情况,但现在不需要`cat`.这只是问题代码中缺少的`print`语句. (5认同)
  • 这里还讨论了使用 kable 代替循环:https://bookdown.org/yihui/rmarkdown-cookbook/kable.html (3认同)