Rmarkdown 输出到 word 创建一个表而不是两个

Ras*_*sen 5 r ms-word rstudio knitr

Rmarkdown 输出到 word 创建一个表而不是两个

当我在 Rstudio 中使用 Rmarkdown 编织一个 Word 文档时,预计下面的代码会创建两个独立的表格,但它会创建一个组合表格。

代码预期创建一个包含两个表的 word 文档:

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

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

## R Markdown


```{r}
knitr::kable(head(iris))
```


```{r}
knitr::kable(head(iris))
```
Run Code Online (Sandbox Code Playgroud)

但它只创建一个:

在此处输入图片说明

但是,如果我设置了 echo=TRUE,则会得到预期的两个表。当我将相同的文档输出到 HTML 时,它还会创建预期的两个表。通过单击 Rstudio 中的编织按钮创建表格。

问题是:如何获得两张桌子,而不是一张桌子?

澄清一下:问题不在于创建的两个表之间的空间很小。问题是创建了一张表。在这个问题所附的图片上,确实看起来是两张表(因为有两个表头),但实际上是一张表。但是 Axeman 的回答解决了这个问题。我仍然认为这是一个错误,因为在 knitr 的早期版本中,没有必要<br><br>在表之间进行指定,以确保它们不会合并为一个。

我提交了一份错误报告,但没有人看到它:https : //support.rstudio.com/hc/en-us/community/posts/115008683128-Bug-Two-tables-produced-by-knitr-kable-被渲染为一个字输出

Rstudio version 1.0.153

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=Danish_Denmark.1252  LC_CTYPE=Danish_Denmark.1252    LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C                    LC_TIME=Danish_Denmark.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_3.4.1  backports_1.1.0 magrittr_1.5    rprojroot_1.2   htmltools_0.3.6 tools_3.4.1     yaml_2.1.14     Rcpp_0.12.12    rmarkdown_1.6   stringi_1.1.5  
[11] highr_0.6       knitr_1.16      digest_0.6.12   stringr_1.2.0   evaluate_0.10.1
Run Code Online (Sandbox Code Playgroud)

在我家里的机器上我没有这个问题。所以相同的代码生成独立的表,不需要<br><br>在块之间放置。在这台家用机器上,sessioninfo 是这样的:

R version 3.4.1 (2017-06-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_3.4.1  backports_1.1.0 magrittr_1.5    rprojroot_1.2   htmltools_0.3.6 tools_3.4.1     yaml_2.1.14     Rcpp_0.12.12   
 [9] stringi_1.1.5   rmarkdown_1.6   knitr_1.17      stringr_1.2.0   digest_0.6.12   evaluate_0.10.1
Run Code Online (Sandbox Code Playgroud)

Axe*_*man 3

在两者之间添加 HTML 注释,可以使表格之间的分隔更加清晰。

例如

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

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

## R Markdown

```{r}
knitr::kable(head(iris))
```

<!-- -->

```{r}
knitr::kable(head(iris))
```
Run Code Online (Sandbox Code Playgroud)

如果失败,您可以换行,替换<!-- --><br><br>.

  • &lt;!-- --&gt;,在我的机器上不起作用,我仍然只有一张桌子。但是&lt;br&gt;&lt;br&gt;*确实*有效。 (3认同)
  • 我建议您使用注释“&lt;!-- --&gt;”来分隔两个表,而不是实际上具有含义(换行符)的“&lt;br&gt;&lt;br&gt;”。这不是 knitr 的错误。这是 Pandoc 的问题,但也不是错误。HTML 注释技巧在 Pandoc 中很常见,例如参见手册中的“结束列表”部分:http://pandoc.org/MANUAL.html#ending-a-list 这里的情况类似:你必须有一些东西在两个表之间结束第一个表。 (2认同)