使用R包'flextable'将多个表格导出到Word文档

4
我正在尝试在同一个Word文档中导出两个(Flex)表格。这是我的代码:

df1 <- data.frame(a = 1:3, b = 1:3)
df2 <- data.frame(c = 11:13, d = 11:13)

library(flextable)
df1_ft <- regulartable(df1)
df2_ft <- regulartable(df2)

library(officer)
word_export <- read_docx()
word_export <- body_add_flextable(word_export, df1_ft)
word_export <- body_add_flextable(word_export, df2_ft)
print(word_export, 'try.docx')

然而,结果是一个包含两个表的单独表格。 你有什么办法可以将两个表格依次添加在一起吗?

2个回答

7
两个表格会依次输出到Word文档中,由于它们之间没有换行符,所以它们看起来像一个表格。最简单的解决方法是在它们之间插入一个空段落即可:
word_export <- read_docx()
body_add_flextable(word_export, df1_ft)
body_add_par(word_export, value = "")
body_add_flextable(word_export, df2_ft)
print(word_export, 'try.docx')

在这里输入图片描述

您还可以看到,您不需要反复将每个body_add_*行的输出重新分配给您的word_export文件 - 每次调用都会直接更新Word文件。


1
不建议不给结果分配赋值...因为将来我可能会在对象中添加可变信息 :) - David Gohel

4

您可以尝试

library(flextable)
library(tidyverse)
library(officer)
# write function
write_word_table <- function(var, doc){
  doc %>%
    body_add_flextable(var) %>% 
    body_add_break() }

# list of tables and the doc
my_list <- list(df1_ft <- regulartable(df1),
              df2_ft <- regulartable(df2))
my_doc <- read_docx()

# use walk (the invisible function of map) to include all tables in one doc
walk(my_list, write_word_table, my_doc) 
print(my_doc, target = "c:/Users/tremmel/Desktop/Doc1.docx") %>% invisible()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接