【问题标题】:rmarkdown: kable, xtable or tab_df tables in Word docrmarkdown:Word doc 中的 kable、xtable 或 tab_df 表
【发布时间】:2026-01-26 07:30:01
【问题描述】:
---
output:
  word_document: default
---

```{r setup, include=FALSE}
data("mtcars")
library(tidyverse)
library(xtable)
library(sjPlot)
library(kableExtra)
```

```{r, results='asis'}
df <- mtcars %>% 
group_by(cyl) %>% 
summarise(disp = mean(disp), 
        wt = mean(wt), 
        n = n()
)
kable(df)

# tab_df(df)
# xtable(df) 
```    

我尝试过xtabletab_dfkable 来生成带有表格的word 文档。当“编织到 HTML 文档”时,所有表格看起来都很好。当“knit to Word”时,xtable 没有显示表格,而tab_dfkable 生成了一个只有一列的表格:

kable(df) 
cyl
disp
wt
n
4
105.1364
2.285727

【问题讨论】:

  • 如果我只加载 tidyverseknitrkable 对我有用。看来kableExtra 可能是问题所在。看到这个:github.com/haozhu233/kableExtra/issues/308.
  • 是的,它也有效。谢谢!
  • 您可以编织成 HTML,然后复制/粘贴或直接在 Word 中打开 HTML 文件,这样也可以正确呈现表格。

标签: r ms-word r-markdown kable


【解决方案1】:

过去几天我对flextable 进行了相当多的试验,当您必须使用 Word 时,它可能是最好的选择:

---
output:
  word_document: default
---

```{r setup, include=FALSE}
data("mtcars")
library(tidyverse)
library(flextable)
```

```{r, results='asis'}
mtcars %>% 
group_by(cyl) %>% 
summarise(disp = mean(disp), 
        wt = mean(wt), 
        n = n()
) %>% 
  flextable() %>% 
  align(part = "all") %>% # left align
  set_caption(caption = "Table 1: Example") %>% 
  font(fontname = "Calibri (Body)", part = "all") %>% 
  fontsize(size = 10, part = "body") %>% 
  # add footer if you want
  # add_footer_row(values = "* p < 0.05. ** p < 0.01. *** p < 0.001.", 
  #                colwidths = 4) %>% 
  theme_booktabs() %>% # default theme
  autofit()

```  

【讨论】:

  • 非常感谢,这正是我所需要的!
最近更新 更多