R在留空的同时提取数字

时间:2012-12-14 18:25:31

标签: r

考虑输入c("foo 1", "bar 2", "baz")。我想将其转换为c(1,2,NA)(基本上从每个字符串中提取数字,如果不存在则将其转换为NA)。我的第一次传球看起来像这样:

funNums = as.numeric(
                  regmatches(x$Fun,
                    regexpr('\\d+', x$Fun, perl = T)))

其中x$Fun是我的输入向量。我从中获得的输出是c(1,2),因为regmatches会丢弃不匹配的内容。如何才能包含NA s?

1 个答案:

答案 0 :(得分:3)

X <- c("foo 1", "bar 2", "baz")
as.numeric(gsub("([^[:digit:]]*)", "", X))
# [1]  1  2 NA

(请注意,当传递类似"1 to 2"的字符串时,这将返回数字12,这可能不是您希望它执行的操作。)