na.omit
和is.na
之间的区别是什么?
minO2 <- equal.count(na.omit(algae$mnO2),number=4,overlap=1/5)
stripplot(season ~ a3|minO2,data=algae[!is.na(algae$mnO2),])
我在第二个代码行中使用了na.omit
而不是is.na
?我的情节完全不同。
另一件事是,如果有人告诉我!
(逻辑否定运算符)背后的逻辑,我将不胜感激?
答案 0 :(得分:2)
在对equal.count
的调用中,对象na.omit(algae$mnO2)
将是algae$mn02
中不是NA
的值。
现在,说你有这个剧情的代码:
stripplot(season ~ a3|minO2,data=na.omit(algae))
如果在algae
不是NA
的行中有algae$mn02
的{{1}}列包含NA
,那么这些行就不会排成一行,而且情节也不会如预期的那样。
这是一个会发生这种情况的例子:
algae<- data.frame(a3=c(NA,1,2), mn02=c(1,2,NA))
algae
## a3 mn02
## 1 NA 1
## 2 1 2
## 3 2 NA
请注意以下两个表达式之间的区别:
na.omit(algae)
## a3 mn02
## 2 1 2
algae[!is.na(algae$mn02),]
## a3 mn02
## 1 NA 1
## 2 1 2
后者将与equal.count(na.omit(algae$mn02))
产生的瓦片对齐,但前者不会。这里的第一个表达式少了一行,因为mn02
不是NA
的情况不完整。
注意:
equal.count(na.omit(algae$mn02))
##
## Data:
## [1] 1 2
...
这里有两个要素。此表达式不会检查NA
以外的列中的mn02
。
答案 1 :(得分:1)
设置数据
nas <- c(NA, 1, 2, 3, NA)
is.na
返回逻辑向量
is.na(nas)
[1] TRUE FALSE FALSE FALSE TRUE
!
操作员将采取真理并使他们变成虚假并将虚假变为真实。
!(is.na(nas))
[1] FALSE TRUE TRUE TRUE FALSE
返回is.na(nas)
na.omit
从矢量
na.omit(tf)
[1] 1 2 3
如果没有更多信息,我无法分辨你的情节发生了什么。