旧版dplyr(0.8.5)中across函数的等价替代写法
dplyr 0.8.5版本兼容改写方案
旧版dplyr无across()函数时,多列分组可以直接用group_by_at()实现,改写后代码和原逻辑输出完全一致,可直接在部署服务器运行:
grouping_columns <- as_name(plot_columns[["xaxis"]]) grouping_columns <- append(grouping_columns, as_name(plot_columns[["color"]])) data <- plot_data %>% group_by_at(.vars = grouping_columns) %>% summarise(n = n(), offset = min(result_value), reorder_result_value = mean(result_value)) %>% as.data.frame
改动点说明
- 仅调整分组语句:原代码
group_by(across(all_of(grouping_columns)))的作用是按grouping_columns存储的列名字符向量完成分组,group_by_at()是dplyr 0.8.5原生支持的分组函数,直接传入字符向量形式的列名集合即可实现完全相同的分组效果 - 汇总统计、转数据框的逻辑完全保留,没有做任何修改,运行结果和原新版代码无差异
- 无需额外安装依赖,直接适配服务器现有dplyr 0.8.5环境
内容的提问来源于stack exchange,提问作者Muslimbek Abduganiev
相关产品推荐
相关产品推荐

