You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设计默认参数为"."的dplyr辅助函数?实现tibble按行求和

给Tibble按行求和并优化管道内的辅助函数调用

首先,针对你想要在dplyr管道里不用显式传递.的需求,只需要把辅助函数的参数默认值设为.就行啦,这样在管道中调用时就能自动识别当前数据框:

library(tibble)
library(dplyr)
set.seed(42)
N <- 10
Df <- tibble(p_1 = rnorm(N), p_2 = rnorm(N), q_1 = rnorm(N), q_2 = rnorm(N))

# 修改后的辅助函数,参数默认值设为 .
myfun <- function(Df = .){
  apply(Df, 1, sum)
}

# 现在直接调用即可,无需传参
Df %>% mutate(total = myfun())

这样修改后,在管道链里调用myfun()时,dplyr会自动把当前的数据流(也就是.)传递给函数的默认参数,完美符合你的需求~

补充:更高效的dplyr风格写法

其实在dplyr生态里,还有更简洁高效的方式实现按行求和,不需要用apply,可以用rowSums()函数,代码更简洁也更适配tibble:

Df %>% mutate(total = rowSums(across(everything())))

这里across(everything())指定对所有列进行操作,rowSums直接计算每行的和,比apply的性能更好,尤其是数据量较大的时候。

内容的提问来源于stack exchange,提问作者mjandrews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:22:57