r语言 - 组合函数时如何在 across() 中使用函数的名称?



当我尝试将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...)那样手动指定它们。

最新更新