如何使用 kableExtra 在函数内指定分组的列名?

How can you specify grouped column names inside a function with kableExtra?

library(tidyverse)
library(knitr)
library(kableExtra)


kable(head(mpg)) %>% kable_styling %>% add_header_above(c(" " = 6,
                                               "foobar" = 5))

当您想手动指定分组列 header 时效果很好:

但是我想把这个特性放在一个函数中,我试过了:

a_function <- function(my_column_head_name){
kable(head(mpg)) %>% kable_styling %>% add_header_above(c(" " = 6,
                                               my_column_head_name = 5))
}

a_function("foobar")

但是这个 returns 命名参数作为列 header 名称:

我猜这与惰性求值有关?

header 是一个以 colspan 为值的命名字符向量。您必须创建向量并使用 names() 分配名称。

a_function <- function(my_column_head_name){
  myHeader <- c(" " = 6, my_column_head_name = 5)
  names(myHeader) <- c(" ", my_column_head_name)
  kable(head(mpg)) %>% kable_styling %>% add_header_above(myHeader)
}

a_function("foobar")