r - 过滤器的否定在R中没有按预期工作
问题描述
【数据集】
X | 是 | Z |
---|---|---|
4.98 | 不适用 | 不适用 |
5.28 | 不适用 | 3.21 |
5.12 | 5.14 | 3.16 |
5.09 | 5.12 | 3.18 |
0 | 0 | 7.12 |
0 | 0 | 不适用 |
d %>% filter(x==0 | y==0 | z==0 | is.na(x) | is.na(y) | is.na(z))
上面的 R 代码给了我正确的结果,它归档数据集并在 x、y 或 z 中的任何一个中显示 0 或 NA 的所有内容,如下所示
X | 是 | Z |
---|---|---|
4.98 | 不适用 | 不适用 |
5.28 | 不适用 | 3.21 |
0 | 0 | 7.12 |
0 | 0 | 不适用 |
但是当我将条件反转为否定时,它显示了一切。
d %>% filter(x!=0 | y!=0 | z!=0 | !is.na(x) | !is.na(y) | !is.na(z))
预期的结果是
X | 是 | Z |
---|---|---|
5.12 | 5.14 | 3.16 |
5.09 | 5.12 | 3.18 |
但我收到了整个数据集
你能告诉我我犯了什么错误吗?
解决方案
我认为这可能是一个逻辑问题,而不是 R 问题。如果您将您的or
陈述替换为and
then 我认为您将获得预期的结果和对原始陈述的否定。换句话说,d %>% filter(x!=0 & y!=0 & z!=0 & !is.na(x) & !is.na(y) & !is.na(z))
.
推荐阅读
- r - 通过R向discord bot发送复杂消息
- python - TensorFlow Tokenize by Unique CSV Row 而不是 Unique Word in Row
- apache-kafka-streams - 构建一个 Kafka Stream,将不同 id 的列表返回到时间间隔
- python - 无法将文件从 sagemaker 笔记本上传到 S3
- c++ - ArrayFire 是否具有像 OpenCV 这样的边界矩形功能?
- python - 为什么我在响应 skip_cols 参数或方法 pd.set_index() 时读取的数据帧不是?
- dns - 如何以编程方式查找域的主名称服务器,包括子域?
- java - 如何在 Spring Boot 2 中检索应用程序上下文
- sql - SQL 查询“选择活动标志 = 1 的最新记录”
- git - 当 git merge 从两个不同的父母那里得到同一行时,哪一个会受到责备?