在下面的小代码示例中(使用R 3.1.2测试),我怀疑is.nan(NA)的比较结果为FALSE,因为NA虽然被认为是缺失值,但仍被视为数字。
x <- c(0, Inf, -Inf, NaN, NA)
is.nan(x)
[1] FALSE FALSE FALSE TRUE FALSE
然而:
x <- c(0, Inf, -Inf, NaN, NA)
is.na(x)
[1] FALSE FALSE FALSE TRUE TRUE
非常令人困惑,因为我认为is.na(NaN)的比较将为FALSE,因为NA被认为是一个数字,虽然缺失,但NaN被认为是非数字值。这个结果似乎是矛盾的。
修改:我在R: Dealing with TRUE, FALSE, NA and NaN阅读了回复,我很惊讶地看到以下回复:
“NaN是数字,所以你不能在逻辑向量中遇到它。”和 “NA代表”不可用“,与一般NaN(”非数字“)不同.NA通常用于代表缺失数据的数字的默认值; NaN通常生成因为a数字问题(记录-1或类似的记录)。“如果我将对NaN值的理解从我认为完全非数字(正如名称所暗示的那样)改为对其中实际上是数字而不是通常理解的定义中的NaN值的理解,我是否会失职,例如,计算负数的平方根,得到一个虚数值?如果是这样,那将解释为什么is.na(NaN)导致TRUE结果,因为NA(数字定义)在数学上与NaN(半神秘意义上的数字)兼容。
任何建设性的建议都会受到赞赏。
感谢。