R语言如何通过变量名向量创建行求和新列并自动拼接命名
实现方案
核心思路是先用paste0()拼接向量Vec的所有元素生成动态列名,再将行和的计算结果赋值给对应列即可。
基础R实现(推荐,代码最简洁)
# 拼接生成动态列名 new_col <- paste0(Vec, collapse = "") # 计算指定列的行和,直接赋值为新列 data[[new_col]] <- rowSums(data[, Vec], na.rm = TRUE)
na.rm = TRUE为可选参数,若你的数据存在缺失值,加上该参数可以跳过NA计算求和,否则整行结果会返回NA。
原有cbind写法的修正方案
如果你习惯用cbind的写法,只需给新生成的列动态命名即可:
data <- cbind(data, setNames(data.frame(rowSums(data[, Vec], na.rm = TRUE)), paste0(Vec, collapse = "")))
dplyr实现(如果你用tidyverse生态)
library(dplyr) data <- data %>% mutate(!!paste0(Vec, collapse = "") := rowSums(across(all_of(Vec)), na.rm = TRUE))
内容的提问来源于stack exchange,提问作者Reda
相关产品推荐
相关产品推荐

