有没有办法通过按顺序列出新的 header 名称来指定灵活的 header 标签?
Is there a way to specify flextable header labels by just listing the new header names in order?
我正在使用 flextable 和一个有很多列的数据集,我想使用 set_header_labels() 一次按顺序更改它们,而不必指定是哪个名称与每个特定值一起使用。但是,我的代码保持 运行 但不工作。例如,这段代码有效:
library(flextable)
ft <- flextable( head( iris ))
ft <- set_header_labels(ft,
values = list(Sepal.Length = "Sepal length",
Sepal.Width = "Sepal width",
Petal.Length = "Petal length",
Petal.Width = "Petal width" ) )
ft
但是这段代码没有任何改变:
library(flextable)
ft <- flextable( head( iris ))
values <- c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH")
ft <- set_header_labels(ft,
values = values)
ft
我只想更改数据框中的名称,但这不是一个选项,因为在我实际的 table 中,headers 将有重复的名称(即“2020”, “2021”、“2020”、“2021”、...),R 不允许。
我看到了两个建议。
如果您可以提供 data.frame,其中 colnames 与标签关联,则可以使用 set_header_df
。
library(flextable)
# suggestion 1: requires all names ----
ref_table <- data.frame(
key = colnames(iris),
label = c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH", "SPECIES")
)
ft <- flextable( head( iris ))
ft <- set_header_df(ft, mapping = ref_table, key = "key")
ft <- theme_booktabs(ft)
ft
或者您可以使用 setNames
或 names<-
来确保 set_header_labels
发挥作用(这是通过匹配名称 (colkeys) 和相关标签来完成的。
# suggestion 2: does not requires all names ----
values <- setNames(c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH"),
colnames(iris)[-5]
)
ft <- flextable( head( iris ))
ft <- set_header_labels(ft, values = values)
ft
我正在使用 flextable 和一个有很多列的数据集,我想使用 set_header_labels() 一次按顺序更改它们,而不必指定是哪个名称与每个特定值一起使用。但是,我的代码保持 运行 但不工作。例如,这段代码有效:
library(flextable)
ft <- flextable( head( iris ))
ft <- set_header_labels(ft,
values = list(Sepal.Length = "Sepal length",
Sepal.Width = "Sepal width",
Petal.Length = "Petal length",
Petal.Width = "Petal width" ) )
ft
但是这段代码没有任何改变:
library(flextable)
ft <- flextable( head( iris ))
values <- c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH")
ft <- set_header_labels(ft,
values = values)
ft
我只想更改数据框中的名称,但这不是一个选项,因为在我实际的 table 中,headers 将有重复的名称(即“2020”, “2021”、“2020”、“2021”、...),R 不允许。
我看到了两个建议。
如果您可以提供 data.frame,其中 colnames 与标签关联,则可以使用 set_header_df
。
library(flextable)
# suggestion 1: requires all names ----
ref_table <- data.frame(
key = colnames(iris),
label = c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH", "SPECIES")
)
ft <- flextable( head( iris ))
ft <- set_header_df(ft, mapping = ref_table, key = "key")
ft <- theme_booktabs(ft)
ft
或者您可以使用 setNames
或 names<-
来确保 set_header_labels
发挥作用(这是通过匹配名称 (colkeys) 和相关标签来完成的。
# suggestion 2: does not requires all names ----
values <- setNames(c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH"),
colnames(iris)[-5]
)
ft <- flextable( head( iris ))
ft <- set_header_labels(ft, values = values)
ft