0

考虑输入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扔掉了不匹配的东西。我怎样才能让它包含NAs?

4

1 回答 1

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

(请注意,当传递一个类似的字符串时"1 to 2",这将返回数字12,这可能不是您想要的。)

于 2012-12-14T18:29:47.587 回答