R:用gsub替换“+”字符

时间:2013-11-18 11:22:12

标签: 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

3 个答案:

答案 0 :(得分:8)

+是元字符,如果您想匹配它,需要进行转义:

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

或者更一般地说,如果您要删除+

gsub(pattern="\\+",replacement="",x=data)

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

答案 1 :(得分:4)

使用fixed=TRUE选项:

gsub(pattern="+", replacement="", fixed=TRUE, c(1,2,3,4,"5+"))

答案 2 :(得分:1)

您还可以使用strsplit

as.numeric(strsplit(data, "\\+"))
# [1] 1 2 3 4 5