RMarkdown 块中的多个 Flextables(echo = F)不呈现

Multiple Flextables in RMarkdown chunk (with echo = F) do not render

我在 OS Windows 7 x64 上使用 R 3.5.1。 我的包版本是:
灵活:0.5.1
军官:0.3.2
整洁宇宙:1.2.1
整理器:0.8.2

我正在尝试创建多个 flextable,然后将多个 flextable 以单个块的形式打印到 Word。我也不想要 Word Doc 中的实际 R 代码,所以我设置了 echo = FALSE。但是,我 运行 遇到了一些奇怪的事情。

如果我使用下面的代码(echo = T):

```{r, echo = F, warning=FALSE, message=FALSE}
library(tidyverse)
library(flextable)
library(officer)
```

```{r, echo = T}
iris_data <- head(iris, n = 10)
iris_data_ft <- iris_data %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data_ft

iris_data2 <- tail(iris, n = 10)
iris_data2_ft <- iris_data2 %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data2_ft
```

我在 Word 中得到以下适当的 flextables 输出:

如果我使用完全相同的代码,但 echo = F:

```{r, echo = F}
iris_data <- head(iris, n = 10)
iris_data_ft <- iris_data %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data_ft

iris_data2 <- tail(iris, n = 10)
iris_data2_ft <- iris_data2 %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data2_ft
```

我在 Word 中得到以下内容(持续 58 页):

最后,如果我将两个 flextables 的一个块分成两个单独的块并设置 echo = F:

```{r, echo = F}
iris_data <- head(iris, n = 10)
iris_data_ft <- iris_data %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data_ft
```

```{r, echo = F}
iris_data2 <- tail(iris, n = 10)
iris_data2_ft <- iris_data2 %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data2_ft
```

表格呈现得很好:

虽然我不介意将 flextables 分成不同的块,但我想知道为什么会这样。任何指导将不胜感激。谢谢!

解决方法如下:



---
title: "Untitled"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(flextable)
```

```{r echo=FALSE, results='asis'}
library(htmltools)
ft <- flextable(head(iris))
for(i in 1:3){
  cat("```{=openxml}\n")
  cat(format(ft, type = "wml"), "\n")
  cat("```\n")
}
```

我想这个问题已经用新版本的 flextable 解决了。如果我将两个块之后的代码放入一个 .Rmd 文档中并编织成单词,它可以毫无问题地编译并显示表格,即使放入一个带有 echo = F 的块中也是如此。只是想添加:在某些情况下,添加 results='asis' - 'as is'-选项(原始 Markdown 解析) - 到你的块头以防止解析表时出错,检查:bookdown.org/results-as-is.

```{r, echo = F, warning=FALSE, message=FALSE}
library(tidyverse)
library(flextable)
library(officer) 
```

```{r, echo = F}
iris_data <- head(iris, n = 10)
iris_data_ft <- iris_data %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data_ft

iris_data2 <- tail(iris, n = 10)
iris_data2_ft <- iris_data2 %>% flextable() %>%
    hline(part = 'header', border = fp_border(color = "black", width = 3)) %>%
    align(align ='center', part = 'all') %>%
    align(j = 1, align ='left', part = 'all') %>%
    add_header_lines('this is a test')
iris_data2_ft
```