R中flextable中的相同列名

gblwokeq  于 2023-06-19  发布在  其他
关注(0)|答案(3)|浏览(123)

我试图从R包“flextable”创建一个“flexable”对象。我需要在多个列中放置相同的列名。当我把它们放在函数“flextable”的“col_key”选项中时,我得到了“duplicated col_keys”的错误。有办法解决这个问题吗?

a<-c(1:8)
b<-c(1:8)
c<-c(2:9)
d<-c(2:9)
A<-flextable(A,col_keys=c("a","b","a","b"))

这是我得到错误的示例代码。

pkbketx9

pkbketx91#

目前,flextable不允许重复的列键。但是,您可以通过在表的顶部添加一行“标题”或一行列标签来实现相同的结果。这些标头可以包含重复的值。
您可以使用“add_header_row”函数来完成此操作。
下面是使用虹膜数据集的基本示例。

ft <- add_header_row(
  ft, 
  values = c("", "length", "width", "length", "width"), 
  top = FALSE 
)
ft <- theme_box(ft)

https://davidgohel.github.io/flextable/articles/layout.html

0s7z1bwu

0s7z1bwu2#

我找到了一种变通方法,将字符\r添加到列名中以创建唯一的列名:

library(flextable)
A <- matrix(rnorm(8), nrow = 2, ncol = 4)
A <- as.data.frame(A)
col_Names <- c("a","b","a","b")
nb_Col_Names <- length(col_Names)

for(i in 1 : nb_Col_Names)
{
  col_Names[i] <- paste0(col_Names[i], paste0(rep("\r", i), collapse = ""), collapse = "")
}

colnames(A) <- col_Names
tbl_A <- flextable(A)
bybem2ql

bybem2ql3#

目前,使用set_header_labels

library(flextable)
a<-c(1:8)
b<-c(1:8)
c<-c(2:9)
d<-c(2:9)
A <- data.frame(a,b,c,d)
flextable(A) |> set_header_labels(`a` = "a", `b` = "b", `c` = "a", `d` = "b")

相关问题