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