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

如何使用dplyr的mutate()与across()批量生成新计算列

使用dplyr内置的across函数的.names参数即可实现,完全满足你提出的两项要求,无需手动逐个指定列名,也不依赖任何弃用功能。

实现代码

library(dplyr)

df_iris <- iris %>%
  mutate(across(matches("\\.(Length|Width)"),
                ~ .x * 2,
                .names = "{.col}.2"))

# 验证结果
head(df_iris)

参数说明

  • 第一个参数matches("\\.(Length|Width)")沿用你原有的列匹配规则,自动筛选所有名称中包含.Length或.Width的列,就算真实场景有20-30列也不用修改匹配逻辑
  • 第二个参数为计算逻辑,这里用简洁的匿名函数写法,和你自定义的double函数效果完全一致
  • 核心参数.names用来定义新列的命名规则:{.col}会自动替换为匹配到的原列名,后缀拼接.2刚好符合你需要的新列名格式

运行后原列会完整保留,同时生成所有符合要求的新列,和你手动逐个定义的输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:15:04