2017-09-01 84 views
3

Rmarkdown输出到Word会创建一个表,而不是两个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)) 
``` 

但它仅创建一个:

enter image description here

但是,如果我设置回声= TRUE,我得到的预计两张桌子。当我将相同的文档输出到HTML时,它也会创建预期的两个表格。 通过单击Rstudio中的针织按钮创建表格。

问题是:我如何得到两个表格而不是一个?

澄清:问题不在于两个表之间的空间很小。问题是一个表被创建。在附上这个问题的图片上,它确实看起来是两张表(因为有两个标题),但它实际上是一张表。但是Axeman的回答解决了这个问题。我仍然认为这是一个错误,因为在早期版本的knitr中,没有必要在表格之间指定<br><br>,以确保它们没有合并成一个。在家里 https://support.rstudio.com/hc/en-us/community/posts/115008683128-Bug-Two-tables-produced-by-knitr-kable-are-rendered-as-one-in-word-output

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 

在我的机器,我没有这样的问题:

我提交了错误报告,但没有人见过它。因此,相同的代码会生成独立的表格,而不需要在区块之间放置<br><br>。在这台主机上,会话信息是这样的:

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 
+0

这里没有问题。 –

+0

谢谢,更新以澄清问题。 –

+0

谢谢。我会把它放在别处。 –

回答

2

在两者之间放置一个HTML注释,并且在表格之间得到更清晰的分隔。

E.g.

--- 
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)) 
``` 

如果失败,你可以把一个换行符代替,以更换<br><br><!-- -->

+0

解决了谢谢。现在我得到两张桌子,而不是一张桌子。澄清:问题是表格之间的空间不是太小,但我实际上只有一个表格。该表*看起来像两个单独的表,因为它有两个标题(带有粗体文本的行),但实际上只有一个。这只有在您尝试在MS Word中移动时才会变得明显。 –

+2

而不是'

',它实际上有一个含义(换行符),我建议您使用注释''来分隔这两个表。这不是knitr的bug。这是一个来自Pandoc的问题,但不是一个错误。 HTML评论技巧在Pandoc中很常见,例如,请参阅手册中的“结束列表”一节:http://pandoc.org/MANUAL。html#ending-a-list这里的情况是类似的:你必须在两个表之间有一些东西来结束第一个表。 –

+0

谢谢澄清@易辉!随意张贴您自己的答案或编辑我的。 – Axeman

相关问题