R:替换+&引用;带gsub的字符
这个问题看起来微不足道,但我不明白为什么它不起作用。我只想用一个不包括“+”运算符的值替换一个包含“+”运算符的字符变量。出于某种原因,gsub()和sub()函数替换数值,但保留运算符。有没有关于如何克服这一问题的提示? 非常感谢R:替换+&引用;带gsub的字符,r,operator-keyword,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="",
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" "+"
数据+
是元字符,需要在匹配时转义:
gsub(pattern="5\\+",replacement="5",x=data)
#[1] "1" "2" "3" "4" "5"
或者更一般地说,如果要删除+
:
gsub(pattern="\\+",replacement="",x=data)
如果未替换,+
表示“前面的项将被匹配一次或多次”,因此在第二个示例中,“5+”
的“5”
元素由模式匹配,并替换为”
,这样您就可以使用strsplit
:
as.numeric(strsplit(data, "\\+"))
# [1] 1 2 3 4 5
使用fixed=TRUE
选项:
gsub(pattern=“+”,replacement=“”,fixed=TRUE,c(1,2,3,4,“5+”)
非常感谢!我想它一定是带有R中运算符/元字符概念的sth。您也可以gsub(pattern=“+”,“”,fixed=TRUE,x=data)
将模式视为文字。