R语言:如何按规则替换向量中的下划线?求助gsub实现方案
按规则替换R向量中的下划线
可以通过正则表达式结合gsub()函数实现需求,核心是精准匹配需要删除的下划线(即后面不紧跟数字的下划线)。
方法一:使用负向先行断言(需开启Perl兼容模式)
# 原始向量 myvec <- c("CERRO_DO_OURO_003F","AQUA_002","TAMOIOS_DELTA_001","URURTUBA_04C") # 处理替换 myvecnew <- gsub("_(?!\\d)", "", myvec, perl = TRUE) # 查看结果 myvecnew
运行后输出:
[1] "CERRODOOURO_003F" "AQUA_002" "TAMOIOSDELTA_001" "URURTUBA_04C"
正则说明:
_(?!\\d):匹配下划线,且下划线后面不是数字(\\d代表数字字符)perl = TRUE:开启Perl兼容正则模式,支持负向先行断言语法
方法二:匹配下划线+非数字的组合
如果不想开启Perl模式,也可以通过匹配下划线后跟非数字的组合,替换成非数字部分(等价于删除下划线):
myvecnew <- gsub("_(\\D)", "\\1", myvec)
这个逻辑是:把_X(X是非数字)替换成X,从而删掉不需要保留的下划线,同样能得到目标结果。
内容的提问来源于stack exchange,提问作者Leprechault
相关产品推荐
相关产品推荐

