【问题标题】:Add a blank row in flextable在 flextable 中添加一个空白行
【发布时间】:2020-11-20 16:00:05
【问题描述】:

在 Word 报告中创建表格时,我经常想在变量之间添加空白行。作为一个简单的玩具示例:

library(dplyr)
library(officer)
library(flextable)
doc <- read_docx()
table_no_breaks <- mtcars %>% 
  count(cyl)
table_no_breaks_ft <- flextable(table_no_breaks)
doc <- doc %>% 
  body_add_flextable(table_no_breaks_ft) %>% 
  body_add_par("")

生成如下所示的表格:

我可以像这样直接在数据框中添加换行符:

table_breaks <- table_no_breaks %>% 
  mutate(
    across(
      everything(),
      as.character
    )
  ) %>% 
  add_row(cyl = NA, n = NA, .after = 1) %>% 
  add_row(cyl = NA, n = NA, .after = 3) %>%
  add_row(cyl = NA, n = NA, .after = 5)
table_breaks_ft <- flextable(table_breaks)
doc <- doc %>% 
  body_add_flextable(table_no_breaks_ft) %>% 
  body_add_par("") %>% 
  body_add_flextable(table_breaks_ft)
print(doc, "flextable.docx")

这会产生我想要的 Word 表格:

但是,我希望能够将空白行直接添加到 flextable 而不是构建 flextable 的数据框。对我来说,这是一个格式问题而不是数据问题,我更喜欢将数据问题(数据框的操作)和格式问题(Word 表的操作)分开。非常感谢任何建议!

【问题讨论】:

  • 晚了四个月,但据我所知,您的解决方案(添加空白行)就是解决方案。

标签: r flextable


【解决方案1】:

这已经很晚了,但是如果您只是在下面的表格示例中添加填充怎么办?问题是您想要实际的空白行还是只需要行之间的间距?

library(dplyr)
 library(flextable)
 
 table_no_breaks <- mtcars %>% 
   count(cyl)
 
 
 table_breaks <- table_no_breaks %>% 
   mutate(
     across(
       everything(),
       as.character
     ))
 
 
 flextable(table_no_breaks) |> 
    padding(padding = 15, part = "all")

编辑:如果您只想填充某些行,您可以使用ij 输入来指定要填充的某些行和列。下面的例子:

flextable(table_no_breaks) |> 
  padding(i= 2, padding = 15, padding.top = TRUE) |> 
  align(align = "center", part = "all")

【讨论】:

  • 嗨,迈克。感谢您的建议!我认为这在技术上确实适用于我发布的示例,我相信它会对某些人有所帮助。实际上,我实际上并不想要在每一行之间休息。我想在某些行之间休息一下。例如,教育水平( 空白行 -> 收入(100)。
  • 我添加了一个示例,该示例将通过使用i 输入到padding() 函数来填充特定行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2018-01-13
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多