flextable对象第一列的缩进

5

我正在构建 flextable 对象来显示表格,有时我想在第一列中添加一个或多个缩进,以显示一些行的名称。

下面我分享一些代码来模拟一些数据并提供可重现的示例。我的问题的真正起点是 ftTable 1):

library(dplyr)
library(flextable)

# Simulate data
g_A <- expand.grid(x = "A", y = c("A_1", "A_2"), z = c("A_1_a", "A_1_b", "A_2_a", "A_2_b"))
g_B <- expand.grid(x = "B", y = c("B_1", "B_2"), z = c("B_1_a", "B_1_b", "B_2_a", "B_2_b"))
g <- rbind(g_A, g_B)
n <- 123
set.seed(1)
df <- sample_n(g, n, replace = TRUE)

# Build table
tmp <- c(table(df$x)[1],
         table(df$y)[1],
         table(df$z)[1:2],
         table(df$y)[2],
         table(df$z)[3:4],
         table(df$x)[2],
         table(df$y)[3],
         table(df$z)[5:6],
         table(df$y)[4],
         table(df$z)[7:8])
my_tab <- data.frame("tmp" = names(tmp), "counts" = tmp, "percentages" = round(tmp/n*100, 2))

# flextable operations
ft <- flextable(my_tab)
ft <- set_header_labels(ft, tmp = "")
ft <- align(ft, align = "center")
ft <- align(ft, j = 1, align = "left")
# ft

现在,我需要缩进第一列中的一些名称。例如,要缩进A_1,我尝试了以下策略:

compose(ft, i = 2, j = 1, as_paragraph(" A_1"))
compose(ft, i = 2, j = 1, as_paragraph("\t A_1"))
# Or
# colformat_char(ft, i = 2, j = 1, prefix = " ")
# colformat_char(ft, i = 2, j = 1, prefix = "\t")

但它们无法起作用(结果与表1相同)。"次佳"策略可能是以下一种(表2)

compose(ft, i = 2, j = 1, as_paragraph("- A_1"))
# Or
# colformat_char(ft, i = 2, j = 1, prefix = "- ")

然而,我希望有适当的缩进。

最后,我分享 表格3,其中每个“-”处都有缩进符号,这是我期望的最终结果。

期待您的见解!

Ciao


你尝试过使用 ?padding 吗?(它可以帮助你设置所需的空间大小) - Cath
太棒了!如果您将其发布为答案,我会接受并点赞。非常感谢! - user14365856
已发布。起初我并不想回答,但实际上这可能会帮助其他人,有时候评论并没有被阅读...很高兴能够帮忙,我记得第一次尝试在flextable中缩进文本时曾经挣扎过;-) - Cath
1个回答

5
为了使 flextable 中的单元格缩进,您可以使用 padding 函数:
ft <- padding(ft, i=2, j=1, padding.left=20)

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