我有一个矢量' a'它有数字和非数字元素。我想从向量中提取数字元素并构建一个新的向量。我该怎么做?
所以如果a是:
a = c(15, 3, 44, "hello", 4, "NA")
我想得到一个包含四个元素的向量,即元素15 3 44和4
答案 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
成语使得发生的事情对读者非常明确,这是理想的,因为你最终真正为人类理解编程(计算理解是次要目标)。