我有一个数据向量,下面是一个类似的版本:
x <- c("1234123xcv?","12341534xxx.","hello","goodbye")
我想做的是让它返回以下内容:
"1234123" "12341534" "" ""
我知道我可以做这样的事情,我手动指定每个大写/小写字母和我知道的几个特殊字符:
grep("[A-Za-z\\?\\.]",x,value=TRUE)
但我不知道该领域的“其他”是什么,不一定是数字。 (并且无法手动查看,因为它太大了)
考虑到这一点,我的问题是:有没有办法指定你只想在gsub()
中返回数字?
答案 0 :(得分:11)
gsub("\\D","",x) # yada yada yada
答案 1 :(得分:5)
在括号内,^
表示不是。所以,这表示用“”替换任何不是数字的
> gsub("[^0-9]", "", x)
[1] "1234123" "12341534" "" ""
答案 2 :(得分:4)
gsub("[^[:digit:]]", "", x) #......
答案 3 :(得分:3)
你需要这样的东西:
[^0-9]*
这将匹配任何不是数字的东西,不需要指定哪个字符。
答案 4 :(得分:2)
我会说
gsub("[^0-9]+", "", x)
[^ 0-9]将一次只替换一个字符,[^ 0-9] +一个或多个会更快。
答案 5 :(得分:0)
您可以使用[\ d]。只返回数字。