请原谅这个糟糕的问题标题......我想不出怎么以更好的方式提问。
我认为代码本身就说明了,但只是为了解决这个问题,我在数据框中搜索了一个编码值,用NA替换了它们,但在检查它们是否已经消失时我得到了一个令人惊讶的结果(对我来说。
> df[df==-999.25]
[1] "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000"
[6] "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000"
[11] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[16] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[21] "-9.992500e+02" "-9.992500e+02" "-999.25000000" "-999.25000000" "-999.25000000"
[26] "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000"
[31] "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000" "-999.25000000"
[36] "-999.25000000" "-999.25000000" "-999.25000000" "-9.992500e+02" "-9.992500e+02"
[41] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[46] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[51] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[56] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
[61] "-9.992500e+02" "-9.992500e+02" "-9.992500e+02" "-9.992500e+02"
> df[df==-999.25] <- NA
> df[df==-999.25]
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[30] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[59] NA NA NA NA NA NA
我很困惑。它是什么原因? (我也累了,也许我应该坐上这一两天)。我检查了'&lt; - '和'['的帮助,但没有学到任何东西(我无法全部学习)。
答案 0 :(得分:3)
当你使用==
时,如果它们存在,则总会返回NA,因为比较NA的结果是默认返回的NA。如果你想要它们,那么你需要添加& !is.na(df)
例如
test <- c(NA,5,3,2,34,"Bob")
test[test == "Bob"]
[1] NA "Bob"
,因为
test == "Bob"
[1] NA FALSE FALSE FALSE FALSE TRUE
答案 1 :(得分:1)
当您将NA
分配给对象时,意味着您不知道该对象内部是什么,缺少值,因此逻辑语句和算术计算为* +&lt; ==&gt;不能对缺失值应用,R对此情况返回NA
做出反应:
a <- NA
a * 0
[1] NA
a/0
[1] NA
a<0
[1] NA
a == 0
[1] NA
最后,我猜你在False
中期望结果为NA
而不是df[df==-999.25]
,但是当R不知道R时,R如何对逻辑语句进行推理不可用或缺少数据