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

如何在R中使用curly curly运算符编写支持多分组变量的函数

问题根因

报错的核心原因是group_by()直接接收{{ by_var }}参数时,无法正确解析多变量拼接的c()表达式,会把多个变量的取值拼接为单个长向量,长度等于数据集行数×分组变量数,和原数据集行数不匹配,因此触发长度校验报错。

修复方案

只需要在group_by()中使用across()包裹待解析的分组变量即可,修改后的函数代码如下:

calculate_avg <- function(df, of_colmn, by_var = NULL){
    df %>%
        group_by(across({{ by_var }})) %>% 
        summarise(across({{ of_colmn }}, list(avg = ~ mean(., na.rm = TRUE))))
}

效果验证

使用你提供的示例代码测试:

calculate_avg(mpg, c(cty, hwy, displ), c(class, trans))

运行后会正常输出按class、trans两个维度分组后,cty、hwy、displ三个字段的平均值结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:03