Reputation: 2341
I have example data as follows:
library(data.table)
library(flextable)
datA <- fread("anyvar somevar
2 4
2 3
2 5")
dat_list <- list("one" = list("datA" = datA, "datB" = 2*datA),"two" = list("datC" = 3*datA, "datD" = 4*datA), "three" = list("datE" = 5*datA, "datF" = 6*datA))
for (i in seq_along(dat_list) ) {
for (j in seq_along( dat_list[[i]] ) ) {
dat_list[[i]][[j]] <- flextable( dat_list[[i]][[j]] )
}
}
I want to print out part of this list in R-markdown
. In R I can just use the print function in a for loop:
for (j in seq_along(dat_list[[2]])) {
print(dat_list[[2]][[j]])
}
However in R-markdown I cannot. I tried using print
and return
, but it is not giving me the right output (print does not print a flextable, and return, returns only the first table). How should I do this? :
---
output: word_document
---
My example data:
```{r}
library(data.table)
library(flextable)
datA <- fread("anyvar somevar
2 4
2 3
2 5")
dat_list <- list("one" = list("datA" = datA, "datB" = 2*datA),"two" = list("datC" = 3*datA, "datD" = 4*datA), "three" = list("datE" = 5*datA, "datF" = 6*datA))
for (i in seq_along(dat_list) ) {
for (j in seq_along( dat_list[[i]] ) ) {
dat_list[[i]][[j]] <- flextable( dat_list[[i]][[j]] )
}
}
```
Print function
```{r, echo=FALSE}
for (j in seq_along(dat_list[[2]])) {
print(dat_list[[2]][[j]])
cat("\n\newpage\n")
}
```
Return function
```{r, echo=FALSE}
for (j in seq_along(dat_list[[2]])) {
return(dat_list[[2]][[j]])
cat("\n\newpage\n")
}
```
Upvotes: 3
Views: 447
Reputation: 124048
Based on this answer you could use knitr::knit_print
and add results='asis'
to the chunk options. Also note that we have to use \\newpage
to add the page break.
---
output: word_document
---
```{r echo=FALSE}
library(data.table)
library(flextable)
datA <- fread("anyvar somevar
2 4
2 3
2 5")
dat_list <- list("one" = list("datA" = datA, "datB" = 2 * datA), "two" = list("datC" = 3 * datA, "datD" = 4 * datA), "three" = list("datE" = 5 * datA, "datF" = 6 * datA))
for (i in seq_along(dat_list)) {
for (j in seq_along(dat_list[[i]])) {
dat_list[[i]][[j]] <- flextable(dat_list[[i]][[j]])
}
}
```
```{r, echo=FALSE, results='asis'}
for (j in seq_along(dat_list[[2]])) {
cat(knitr::knit_print(dat_list[[2]][[j]]))
cat("\n\\newpage\n")
}
```
Upvotes: 2