组合函数时如何在 across() 中使用函数名?

How to use function's name in across() when combining functions?

当我尝试将 across() 函数与要应用的许多函数一起使用时,结果我得到的列命名如下所示:

iris %>% summarise(across(Petal.Length, .fns = c(mean, median, var, sd), .names = "{fn}_{col}")

  1_Petal.Length 2_Petal.Length 3_Petal.Length 4_Petal.Length
1          3.758           4.35       3.116278       1.765298

列的名称是 1_Petal.Length, 2_Petal.Length 等,但我想要得到的是函数的名称而不是数字,例如mean_Petal.Length, median_Petal.Length 等,就像 .fns 参数中只有一个函数一样。我知道我可以用 .fns = c(mean=mean, median=median, var=var, sd=sd) 来命名函数,但是有没有我在这里遗漏的更简单的方法?

您可以使用 lst 而不是 c :

library(dplyr)

iris %>% summarise(across(Petal.Length, 
                  .fns = lst(mean, median, var, sd), 
                  .names = "{fn}_{col}"))

#  mean_Petal.Length median_Petal.Length var_Petal.Length sd_Petal.Length
#1             3.758                4.35         3.116278        1.765298

lst 自动创建命名参数,无需像 c(mean=mean...).

那样手动指定它们