R语言如何移除向量中连续重复的+符号并保留单个分隔符
报错的核心原因有两点:
+是正则表达式的特殊量词,代表匹配前一个字符1次及以上,直接写++不符合正则语法规则,需要先转义才能匹配字面意义的+- 你使用的
sub()函数只会替换字符串中第一个匹配到的内容,无法处理多处连续重复的+
你可以直接使用全局替换函数gsub()实现需求,代码如下:
# 你的示例数据 df <- data.frame(name = c(A="a+++a+b+c++++d+d+d")) # 全局替换所有连续的+为单个+ df$name <- gsub("\\++", "+", df$name)
上述正则规则中,\\+代表匹配字面意义的+,后面的+是正则量词,代表匹配前一个规则1次及以上,整体会匹配所有连续出现的+,统一替换为单个+,运行后即可得到你预期的a+a+b+c+d+d+d结果。
如果你习惯使用tidyverse生态的stringr包,也可以用等效写法:
library(stringr) df$name <- str_replace_all(df$name, "\\++", "+")
内容的提问来源于stack exchange,提问作者chipsin
相关产品推荐
相关产品推荐

