【问题标题】:Rmd table captions are messed up when knitting to word doc编织到 word doc 时,Rmd 表格标题搞砸了
【发布时间】:2020-03-01 00:44:48
【问题描述】:

我正在尝试在 Rmd 中制作带有不同标题或标题的表格。包flextable 有很好的选项,可以输出到word 文档。它的功能add_header_lines() 允许您在每个表格的顶部添加标题标题。当 Rmd 输出换行到新页面时,add_header_lines() 在下一页的续表顶部添加另一个标题标题。但是,它会获取传递给您首先创建的任何表的参数。然后它对下一张表继续正确,直到到达下一页,它又恢复到第一页(见图)。

这是一个可重现的示例,其中表中的所有值都应与表编号相同。

关于如何解决这个问题的任何想法?我希望它有正确的标题,但会满足于在分页后简单地去掉第二个标题。

    ---
title: "Untitled"
author: "Anyone"
date: "2/29/2020"
output:
  word_document: default
  html_document:
    df_print: paged
  pdf_document: default
---

```{r setup, include=FALSE}
library(dplyr)
library(flextable)

knitr::opts_chunk$set(echo = FALSE,message=FALSE)

```


```{r Table1}
cars1<-cars*0+1
theme_zebra(regulartable(cars1))%>% 
  align(align="center",part="all") %>% 
  autofit%>% 
  add_header_lines(paste("Table 1: Model output for thing 1"))

```

```{r Table2}
cars2<-cars*0+2
theme_zebra(regulartable(cars2))%>% 
  align(align="center",part="all") %>% 
  autofit%>% 
  add_header_lines(paste("Table 2: Model output for thing 2"))

```

```{r Table3}
cars3<-cars*0+3
theme_zebra(regulartable(cars3))%>% 
  align(align="center",part="all") %>% 
  autofit%>% 
  add_header_lines(paste("Table 3: Model output for thing 3"))

```

```{r Table4}
cars4<-cars*0+4
theme_zebra(regulartable(cars4))%>% 
  align(align="center",part="all") %>% 
  autofit%>% 
  add_header_lines(paste("Table 4: Model output for thing 4"))

```

请注意,这是分页符所在的位置。此处标有“1”的表实际上应该是“2”。它将继续对每一页执行此操作,其中表格的其余部分标有“1”(尝试 Rmd 代码)。

【问题讨论】:

    标签: ms-word r-markdown flextable


    【解决方案1】:

    那是单词错误:) 它决定两个表之间没有中断是同一个表。

    ---
    title: "Untitled"
    author: "Anyone"
    date: "2/29/2020"
    output:
      word_document: default
    ---
    
    ```{r setup, include=FALSE}
    library(dplyr)
    library(flextable)
    
    knitr::opts_chunk$set(echo = FALSE,message=FALSE)
    
    ```
    
    
    ```{r Table1}
    cars1<-cars*0+1
    theme_zebra(flextable(cars1))%>% 
      align(align="center",part="all") %>% 
      autofit%>% 
      add_header_lines(paste("Table 1: Model output for thing 1"))
    
    ```
    
    blah
    
    ```{r Table2}
    cars2<-cars*0+2
    theme_zebra(flextable(cars2))%>% 
      align(align="center",part="all") %>% 
      autofit%>% 
      add_header_lines(paste("Table 2: Model output for thing 2"))
    
    ```
    
    blah
    
    ```{r Table3}
    cars3<-cars*0+3
    theme_zebra(flextable(cars3))%>% 
      align(align="center",part="all") %>% 
      autofit%>% 
      add_header_lines(paste("Table 3: Model output for thing 3"))
    
    ```
    
    blah
    
    ```{r Table4}
    cars4<-cars*0+4
    theme_zebra(flextable(cars4))%>% 
      align(align="center",part="all") %>% 
      autofit%>% 
      add_header_lines(paste("Table 4: Model output for thing 4"))
    
    ```
    

    据我所知,这不是 flextable 可以解决的问题,但如果有一个我不知道的选项,我很乐意整合它。

    【讨论】:

    • 我用 flextable 更改了regulartable(维护regulartable 是为了与用户制作的旧代码兼容,但要注意它产生的对象与flextable 完全相同。)
    • 谢谢大卫!为了完整起见,Rmd 不会将空格或换行识别为需要进入单词 doc 的内容。但是,如果您使用&lt;br&gt; 而不是blah,您可以在表格之间添加空格(换行符),这也可以解决问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多