r - 为什么我在索引与我的条件不匹配的向量(或数据帧)时得到 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)?
解决方案
您的假设是正确的,即当数据中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)
推荐阅读
- python - 使用第三个列表对列表进行排序
- wordpress - 如何将注销的用户从 wpforms 重定向到登录页面?
- jenkins-pipeline - 将变量从一个 Jenkins 管道发送到另一个
- tensorflow - 与图像像素分布有关
- c# - 有没有办法以编程方式将文件列表从一个文件夹移动到一个驱动器中的另一个文件夹
- python - 使用熊猫和数据框添加新列一个csv文件
- javascript - JS / Chrome 扩展 - EventListener 和 Mutation 未检测到更改
- c# - 绝对布局滚动视图不起作用
- android - android -java.io.IOException:释放时取消
- sql - 在 SQL Server 中查找两个数字之间的缺失行