组合函数时如何在 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...)
.
那样手动指定它们
当我尝试将 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...)
.