转换为数字:简化2次gsub调用

时间:2015-06-30 10:29:23

标签: regex r

我想将字母数字向量转换为数字向量。现在,我正在使用正则表达式但只有2次调用gsub

## wrapping this in function 
to_numeric <-
  function(x)    gsub(',','.',gsub("[^(\\d|,)]","",x,perl=TRUE))
## call it 
to_numeric(c('a12,12','Atr 145 ',' 14 5,1 4A'))
## [1] "12.12"  "145"    "145.14"

如何使用独特的正则表达式或任何其他方法将此简化为一次调用? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果使用基数R,您将需要使用级联调用来进行不同的替换。

但是,您可以使用gsubfn包,使用替换列表进行简化。

library(gsubfn)

x <- c('a12,12', 'Atr 145 ', ' 14 5,1 4A')

gsubfn('\\D+', list(',' = '.', ''), x)
# [1] "12.12"  "145"    "145.14"