首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在dplyr的跨函数中将函数参数粘合到.names?

dplyr包中,across()函数允许你在数据框(data frame)的多个列上应用同一个函数。如果你想在.names参数中使用函数参数,可以通过以下步骤实现:

基础概念

.names参数用于自定义输出列的名称。它接受一个字符串模板,其中可以包含{.col}(当前列名)和{fn}(函数名)等占位符。

相关优势

  • 灵活性:允许你根据不同的列名和函数名动态生成列名。
  • 可读性:生成的列名更具描述性,便于理解数据。

类型

.names参数接受一个字符串模板,可以使用多种占位符来动态生成列名。

应用场景

当你需要对数据框中的多列应用相同的函数,并且希望生成的列名包含函数名和列名时,这个功能非常有用。

示例代码

假设我们有一个数据框df,并且我们希望对其中的数值列计算均值和标准差:

代码语言:txt
复制
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}表示函数名。

输出

代码语言:txt
复制
   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

参考链接

通过这种方式,你可以灵活地生成包含函数参数和列名的列名,从而提高代码的可读性和结果的清晰度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券