R语言中如何移除数据框列名内指定的b_E_字符串片段
原有代码失效原因
你写的正则'(.*)_.*'属于贪婪匹配规则,会匹配从列名开头到最后一个下划线的全部内容,替换为空值后自然会清空所有列名,和你要移除指定片段的需求完全不匹配。
正确实现代码
你要的效果是删除列名里固定的b_E_字符串片段,直接做固定字符串替换即可,不需要写复杂的正则捕获逻辑:
colnames(data) <- gsub("b_E_", "", colnames(data), fixed = TRUE)
效果验证
对应你提到的列名格式,替换效果如下:
- 替换前列名:
E_x_b_E_1、E_x_b_E_12、E_x_b_E_999 - 替换后列名:
E_x_1、E_x_12、E_x_999
参数说明:加
fixed = TRUE是告诉R按纯文本匹配目标字符串,不用走正则解析,既不会出现正则匹配偏差,执行速度也更快。如果确认每个列名里只出现一次b_E_,把gsub换成sub也能实现相同效果。
内容的提问来源于stack exchange,提问作者giegie
相关产品推荐
相关产品推荐

