I'm working a report with rmarkdown and latex. I need to print a group of tables using knitr::kable
, but the don't print when inside a for loop.
This is my code:
---
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"))
}
```
It doesn't matter if I use results = "asis"
or if I omit it altogether, nothing prints to the document.
I've tried enclosing the kable
call within a print
call (print(kable(t2[[i]]...
), and it successfully prints the output to the document, but the format is the same format as a standard R prompt (preceded by ##
, for example), which is rather ugly.
How can I display the tables, other than manually?
### EDIT ###
Some answerers have redirected me to R knitr print in a loop as a duplicate answer. It's not, because as I stated in the previous paragraph, this effectively prints the table, but the format is not the expected one. The accepted answer (and related github thread) really solved the problem.
print
call does the trick. I suppose you forgot to setresults="asis"
when you tried this. – Norinenorita