首页 > 解决方案 > 为什么我在索引与我的条件不匹配的向量(或数据帧)时得到 NA?

问题描述

当我在 R 中对向量或数据框进行索引时,有时会得到一个空向量(例如 numeric(0)、integer(0) 或 factor(0)...),有时会得到 NA。
我想当我处理的向量或数据帧包含 NA 时,我会得到 NA。

例如,

iris_test = iris
iris_test$Sepal.Length[1] = NA

iris[iris$Sepal.Length < 0, "Sepal.Length"] # numeric(0)
iris_test[iris_test$Sepal.Length < 0, "Sepal.Length"] # NA

当我找到与我的条件不匹配的值
(没有搜索结果 --> 结果向量中没有元素 --> numeric(0))时,我很直观地得到 numeric(0)。
但是,为什么我得到 NA 而不是 numeric(0)?

标签: rindexing

解决方案


您的假设是正确的,即当数据中NA有值时您会得到值NA

比较产生NA

iris_test$Sepal.Length < 0
#[1]    NA FALSE FALSE FALSE.....

当您使用NA它对向量进行子集化时,将返回NA. 参见例如,

iris$Sepal.Length[c(1, NA)]
#[1] 5.1  NA 

这是第二种情况返回的内容。对于第一种情况,所有的值都是FALSE这样你得到numeric(0)

iris$Sepal.Length[FALSE]
#numeric(0)

推荐阅读