我有一个字符串:
s="a+3*b+4*c+-5*d+-6*e"
我想将其转换为:
s_want="a+3*b+4*c-5*d-6*e"
这里“+ - ”正在被“ - ”取代。我试过跟着
> gsub("+-","-",s)
[1] "a+3*b+4*c+-5*d+-6*e"
你可以看到这只是行不通。事实上,我也试过了其他一些替代品。
> gsub("+-","XX",s)
[1] "a+3*b+4*c+XX5*d+XX6*e"
似乎“+”符号对于R是不可见的。我怀疑它与正则表达式有关。如果我找到了什么,让我搜索并发布更新。谢谢。 更新: 经过一番搜索,我发现“fixed = T”是我正在寻找的解决方案。
> gsub("+-","-",s,fixed=T)
[1] "a+3*b+4*c-5*d-6*e"
感谢所有打扰搜索解决方案的人。
答案 0 :(得分:4)
由于+
是正则表达式中的特殊元字符(重复前一个标记一次或多次),因此您需要将其转义或将+
置于其中字符类( [+]
),以匹配文字+
符号。
gsub("\\+-","-",s)
OR
gsub("[+]-","-",s)