从向量中提取数字元素

时间:2016-10-02 23:06:11

标签: r regex string vector numeric

我有一个矢量' a'它有数字和非数字元素。我想从向量中提取数字元素并构建一个新的向量。我该怎么做?

所以如果a是:

a = c(15, 3, 44, "hello", 4, "NA")

我想得到一个包含四个元素的向量,即元素15 3 44和4

3 个答案:

答案 0 :(得分:2)

b = as.numeric(a)
b = b[!is.na(b)]
b

答案 1 :(得分:1)

a[grep('[0-9]+',a)]
#[1] "15" "3"  "44" "4" 

答案 2 :(得分:0)

使用purrr

library(purrr)

a <- c(15, 3, 44, "hello", 4, "NA")

as.numeric(a) %>% discard(is.na)

默认情况下,R会将c(15, 3, 44, "hello", 4, "NA")转换为字符向量(因为你有数字和字符串的混合)。因此,您必须先进行转换并删除生成的NA(您也应该看到警告消息)。 purrr成语使得发生的事情对读者非常明确,这是理想的,因为你最终真正为人类理解编程(计算理解是次要目标)。