从向量中提取数字元素
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 非常明确,这是理想的,因为您最终真正要为人类理解编程(计算理解是次要目标)。
我有一个向量 '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 非常明确,这是理想的,因为您最终真正要为人类理解编程(计算理解是次要目标)。