我正在尝试导出两个(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')
然而,结果是包含两个表的单个表。 知道如何一个接一个地添加两个表吗?
答案 0 :(得分:2)
这两个表一个接一个地输出到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 :(得分:1)
你可以尝试
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()