微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

柔性对象第一列的缩进

如何解决柔性对象第一列的缩进

我正在构建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,as_paragraph(" A_1"))
compose(ft,as_paragraph("\t A_1"))
# Or
# colformat_char(ft,prefix = " ")
# colformat_char(ft,prefix = "\t")

但是它们不起作用(结果与表1中的结果相同)。一种“次优”的策略可以是以下(Table 2)

compose(ft,as_paragraph("- A_1"))
# Or
# colformat_char(ft,prefix = "- ")

但是,我想要适当的缩进。

最后,我与预期的最终结果Table 3相同,并以缩进代替了每个“-”。

等待您的见解!

Ciao

解决方法

要缩进flextable中的单元格,可以使用padding函数:

ft <- padding(ft,i=2,j=1,padding.left=20)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。