从向量中提取数字元素

Extract numeric elements from a vector

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

所以如果 a 是:

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

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

b = as.numeric(a)
b = b[!is.na(b)]
b
a[grep('[0-9]+',a)]
#[1] "15" "3"  "44" "4" 

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 习语使正在发生的事情对 reader 非常明确,这是理想的,因为您最终真正要为人类理解编程(计算理解是次要目标)。