簡體   English   中英

有沒有辦法通過按順序列出新的 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

我只想更改 dataframe 中的名稱,但這不是一個選項,因為在我的實際表中,標題將具有重復的名稱(即“2020”、“2021”、“2020”、“2021”、. ..),R 不允許。

我看到了兩個建議。

如果您可以提供 colnames 與標簽相關聯的 data.frame,則可以使用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

在此處輸入圖像描述

或者您可以使用setNamesnames<-來確保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

在此處輸入圖像描述

從文檔中, values參數必須是

一個命名列表(名稱是數據列名),每個元素都是一個字符值,指定要使用的 label。

實現所需結果的一種選擇是使用setNames

此外,我使用ft$col_keys[seq(length(values))來獲取ft表 object 的列名。

library(flextable)

values <- c("SEPAL LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH")

ft <- flextable(head(iris))
ft <- set_header_labels(ft,
  values = setNames(values, ft$col_keys[seq(length(values))])
)
ft

reprex package (v2.0.1) 於 2021 年 12 月 14 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM