Использование flextable в цикле уценки r не создает таблицы

Мне нужно создать много таблиц, и я пытаюсь создавать их в цикле. Я использую flextable с rmarkdown внутри rstudio. Использование команды print(theFlextable) в цикле создает список текста, а не таблицу. Это происходит с типами вывода docx и html. Если я не использую циклический рендеринг правильно. Вот демонстрация:

---
title: "Demo"
output: word_document
---

```{r setup, include=FALSE}
library(flextable)
```
## This Works
```{r iris, echo=F, message=F, error=F, results='asis'}
ft<-flextable(iris[1:10,])
ft
```
## This produces no output
```{r echo=F, message=F, error=F, results='asis'}
doThese<-c("setosa","virginica")
for (i in doThese){
  tbl<-subset(iris, Species==i)
  ft<-flextable(tbl[1:10,])
  ft
}
```
## This produces incorrect output
```{r echo=F, message=F, error=F, results='asis'}
doThese<-c("setosa","virginica")
for (i in doThese){
  tbl<-subset(iris, Species==i)
  ft<-flextable(tbl[1:10,])
  print(ft)
  cat("\n\n")
}
``` 

Это результат в слове последнего блока выше:

тип: флештабируемый объект. col_keys: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Заголовок Species содержит 1 строку, тело содержит 10 строк, образец исходного набора данных: Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5,1 3,5 1,4 0,2 сетоса 2 4,9 3,0 1,4 0,2 сетоса 3 4,7 3,2 1,3 0,2 сетоса 4 4,6 3,1 1,5 0,2 сетоса 5 5,0 3,6 1,4 0,2 сетоса

тип: флештабируемый объект. col_keys: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Заголовок Species содержит 1 строку, тело содержит 10 строк, образец исходного набора данных: Sepal.Length Sepal.Width Petal.Length Petal.Width Species 101 6,3 3,3 6,0 2,5 Вирджиника 102 5,8 2,7 5,1 1,9 Вирджиника 103 7,1 3,0 5,9 2,1 Вирджиника 104 6,3 2,9 5,6 1,8 Вирджиника 105 6,5 3,0 5,8 2,2 Вирджиника


person user2547973    schedule 05.10.2018    source источник


Ответы (2)


Если у вас версия Pandoc> = 2 (в комплекте с RStudio 1.2), вы можете использовать knit_print. я нашел

cat(knit_print(ft))

успешно распечатал таблицы в цикле.

person anotherfred    schedule 07.12.2018
comment
Это сработало для меня; Однако я не мог подключиться к этой команде - пришлось сохранить таблицу как x, затем cat(knit_print(x)) - person Nova; 07.03.2019
comment
Также не забудьте указать results = 'asis' в параметрах заголовка фрагмента кода, чтобы это работало. - person Isaac Zhao; 06.04.2021

Я не уверен, что это правильный ответ, но я использовал его для решения своей проблемы:

Цикл по коду в knitr и rmarkdown

person user2547973    schedule 06.10.2018