2

当我尝试将该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),但是我在这里缺少什么更简单的方法吗?

4

1 回答 1

3

您可以使用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...).

于 2021-03-17T10:29:39.123 回答