R语言用正则去除列名括号外字符并按映射表重命名列
R数据框列名处理实现方案
以下实现全部基于R基础函数,无需安装额外依赖包。
步骤1:提取括号内内容生成df1
# 保留第一列名不变,剩余列名仅保留括号内的数字内容 colnames(df)[-1] <- sub(pattern = ".*\\((\\d+)\\).*", replacement = "\\1", x = colnames(df)[-1]) df1 <- df
核心逻辑:通过正则匹配列名中(数字)格式的片段,仅捕获括号内的数字替换原列名,第一列CCLE_ID保持不变,得到的df1和你提供的期望输出完全一致。
步骤2:根据映射表替换列名
# 按照df2的oldname和newname对应关系替换df1的列名 colnames(df1) <- df2$newname[match(colnames(df1), df2$oldname)]
核心逻辑:用match函数匹配df1当前列名和df2的oldname字段,直接映射到对应newname,匹配逻辑和列顺序无关,不会出现错位问题。
验证结果
执行上述代码后,打印df1的列名可看到最终效果:
print(colnames(df1)) # 输出结果: # [1] "CCLE_ID" "ESN" "PSA" "TGI" "PICJ" "TMNS" "IUJE" "UED" "PUQD" "STGW"
内容的提问来源于stack exchange,提问作者SUMIT
相关产品推荐
相关产品推荐

