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

在R中不硬编码索引 对含指定字符串+数字的目标列执行行求和

实现方案

核心思路

用正则表达式精准匹配符合规则的列名,避免误匹配:

  • 用^act\\d匹配开头为act、后紧跟数字的列,完全避开active、latency.to.first.active这类含act但不符合规则的列
  • 同理用^inact\\d匹配inact类列,^rew\\d匹配rew类列
  • 直接用rowSums对列子集计算行和,替代低效的逐行循环

完整代码

# 计算active总和:匹配所有act开头后跟数字的列
dat$active <- rowSums(dat[, grepl("^act\\d", colnames(dat))], na.rm = TRUE)
# 计算inactive总和:匹配所有inact开头后跟数字的列
dat$inactive <- rowSums(dat[, grepl("^inact\\d", colnames(dat))], na.rm = TRUE)
# 计算reward总和:匹配所有rew开头后跟数字的列
dat$reward <- rowSums(dat[, grepl("^rew\\d", colnames(dat))], na.rm = TRUE)

说明

  • 代码无需硬编码列索引,只要列名命名规则不变,列数增减、顺序调整都能自动适配
  • 加na.rm = TRUE参数可避免行内存在缺失值时返回NA的问题,不需要可以删掉
  • 向量化操作比原逐行循环效率高很多,数据量越大优势越明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:02