如何在R语言中按条件移除数据框列名中+后的内容
解决R语言数据框列名处理的报错问题
先拆解下你代码里的几个问题:
grepl(df, "test")参数顺序搞反了:grepl的第一个参数是匹配模式,第二个才是要检查的字符向量,得写成grepl("test", colnames(df))- 用了标量的
if语句,没法直接处理列名这类向量,得用支持向量化操作的ifelse函数 gsub("+.*","",...)里的+是正则表达式的特殊字符(表示匹配前面字符一次或多次),要匹配字面意义的加号,得用\\+转义
下面是修正后的可运行代码:
# 先获取原始列名 original_cols <- colnames(df) # 批量处理列名:不含test的列截断+及后续内容,含test的列保留原样 colnames(df) <- ifelse(!grepl("test", original_cols), gsub("\\+.*", "", original_cols), original_cols)
运行后你的数据框就会得到期望的列名:
Col Col_test+deg Col_ Col_+test 1 1 1 1
内容的提问来源于stack exchange,提问作者Nick Knauer
相关产品推荐
相关产品推荐

