在dplyr
包中,across()
函数允许你在数据框(data frame)的多个列上应用同一个函数。如果你想在.names
参数中使用函数参数,可以通过以下步骤实现:
.names
参数用于自定义输出列的名称。它接受一个字符串模板,其中可以包含{.col}
(当前列名)和{fn}
(函数名)等占位符。
.names
参数接受一个字符串模板,可以使用多种占位符来动态生成列名。
当你需要对数据框中的多列应用相同的函数,并且希望生成的列名包含函数名和列名时,这个功能非常有用。
假设我们有一个数据框df
,并且我们希望对其中的数值列计算均值和标准差:
library(dplyr)
# 示例数据框
df <- data.frame(
A = c(1, 2, 3),
B = c(4, 5, 6),
C = c(7, 8, 9)
)
# 使用across()函数计算均值和标准差,并自定义列名
result <- df %>%
mutate(
across(
.cols = where(is.numeric),
.fns = list(mean = mean, sd = sd),
.names = "{.col}_{fn}"
)
)
print(result)
.cols = where(is.numeric)
:选择所有数值类型的列。.fns = list(mean = mean, sd = sd)
:定义要应用的函数及其对应的名称。.names = "{.col}_{fn}"
:使用模板生成列名,其中{.col}
表示当前列名,{fn}
表示函数名。 A B C A_mean A_sd B_mean B_sd C_mean C_sd
1 1 4 7 2.000000 1.000000 5.000000 1.000000 8.000000 1.000000
2 2 5 8 2.000000 1.000000 5.000000 1.000000 8.000000 1.000000
3 3 6 9 2.000000 1.000000 5.000000 1.000000 8.000000 1.000000
通过这种方式,你可以灵活地生成包含函数参数和列名的列名,从而提高代码的可读性和结果的清晰度。
领取专属 10元无门槛券
手把手带您无忧上云