如何计算向量头部的NA?
How to count NA in head of vector?
x=c(NA, 2, -3, NA, -5, 5, -7, -8, -9, -10, NA, -2, 2, -14, -15, NA, -17, 2, NA, -20)
我想 select 不是 NA
的前 10 个值。
所以我这样做:
head(x[!is.na(x)], 10)
现在我想知道有多少 NA 被忽略了:
sum(is.na(head(x[is.na(x)], 10)))
# [1] 5
不正确:应该是 3
我们需要实际向量子集上的 logicla 向量,而不是仅 NA 数据
sum(is.na(head(x, 10)))
#[1] 3
head(x[is.na(x)], 10)
#[1] NA NA NA NA NA
仅给出 NA,因为我们正在对 NA 元素进行子集化
更新
根据评论中的逻辑,一种方法是
i1 <- !is.na(x)
i1[i1] <- seq_along(i1[i1])
sum(is.na(head(x, which(i1 == 10))))
应该这样做:
sum(is.na(head(x, which(cumsum(!is.na(x)) == 10))))
!is.na
给出的逻辑向量的cumsum
给了我们第10个非NA
数的索引,也就是我们想要的[=14=的输入] 函数(因为我们想要的所有值,直到我们得到第十个非 NA
值)。
x=c(NA, 2, -3, NA, -5, 5, -7, -8, -9, -10, NA, -2, 2, -14, -15, NA, -17, 2, NA, -20)
我想 select 不是 NA
的前 10 个值。
所以我这样做:
head(x[!is.na(x)], 10)
现在我想知道有多少 NA 被忽略了:
sum(is.na(head(x[is.na(x)], 10)))
# [1] 5
不正确:应该是 3
我们需要实际向量子集上的 logicla 向量,而不是仅 NA 数据
sum(is.na(head(x, 10)))
#[1] 3
head(x[is.na(x)], 10)
#[1] NA NA NA NA NA
仅给出 NA,因为我们正在对 NA 元素进行子集化
更新
根据评论中的逻辑,一种方法是
i1 <- !is.na(x)
i1[i1] <- seq_along(i1[i1])
sum(is.na(head(x, which(i1 == 10))))
应该这样做:
sum(is.na(head(x, which(cumsum(!is.na(x)) == 10))))
!is.na
给出的逻辑向量的cumsum
给了我们第10个非NA
数的索引,也就是我们想要的[=14=的输入] 函数(因为我们想要的所有值,直到我们得到第十个非 NA
值)。