R:用 gsub 替换 "+"字符

标签 r operator-keyword gsub

这个问题似乎微不足道,但我无法弄清楚为什么它不起作用。我只想用不包括“+”运算符的单个值替换涉及“+”运算符的字符变量。出于某种原因, gsub() 和 sub() 函数替换了数值但保留了运算符。关于如何克服这个问题的任何提示?
非常感谢!

data <- c(1,2,3,4,"5+")
gsub(pattern="5+",replacement="5",x=data)
#[1] "1"  "2"  "3"  "4"  "5+"

gsub(pattern="5+",replacement="",x=data)
#[1] "1"  "2"  "3"  "4"  "+"

R 3.0.2

最佳答案

+ 是元字符,要匹配时需要转义:

gsub(pattern="5\\+",replacement="5",x=data)
#[1] "1" "2" "3" "4" "5"

或者更一般地说,如果你想删除 + :
gsub(pattern="\\+",replacement="",x=data)

如果未转义, + 表示“前一项将被匹配一次或多次”,因此在您的第二个示例中, "5""5+" 元素由模式匹配,并由 "" 替换,留下 "+"

关于R:用 gsub 替换 "+"字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20046526/

相关文章:

r - 根据最后 n 个字符提取值

R markdown - flexdashboard - 网格布局 & 滚动 & 标签集

regex - R 语言 : remove first character if equal to quotation mark

r - Pmetrics : declare default fortran compiler before calling PMBuild()

c++ - 在 C++ 中重载类的运算符 []

c++ - 重载 operator<< 改变成员变量

MySQL - 使用 Join 运算符后出现重复列

从包含 R 中特定字符的字符串向量中删除条目

r - 如何在 ggplot2 中添加第二个轴标签?

r - 如何从 R 重命名目录,当它不为空时?