考虑输入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?
答案 0 :(得分:3)
X <- c("foo 1", "bar 2", "baz")
as.numeric(gsub("([^[:digit:]]*)", "", X))
# [1] 1 2 NA
(请注意,当传递类似"1 to 2"
的字符串时,这将返回数字12
,这可能不是您希望它执行的操作。)