比较Inf
和-Inf
与NA_real_
时返回的一些值让我感到惊讶。
特别:
NA_real_ <= Inf
#[1] NA
-Inf <= NA_real_
#[1] NA
documentation(NA
)的help(NA)
的第一句话是
NA
是长度为1的逻辑常量,包含缺失值指示符。
我想必须有一些不小于或等于Inf
的值和一些不大于或等于-Inf
的值。那些价值观是什么?你如何在R代表他们?请提供完整的清单。
我对NaN
有点熟悉,但是这些产生的计算产生的结果是否超出了double
可以存储的正确值范围?我不知道Inf - Inf
究竟是什么,但它不能大于Inf
。什么比Inf
应该实施的IEEE标准中的double
更大?该标准是否只是定义任何涉及NaN
的操作都会返回NaN
?那么为什么R不回归NaN
? NA
不是IEEE 754的价值,是吗?也许我误读了documentation?
指向你的地方是:
?Arithmetic
?Inf
?`>`
第一个表明通常使用IEEE 754:
R依赖于OS服务(以及FPU上的服务)进行浮点运算。在所有当前的R平台上,使用IEC 60559(也称为IEEE 754)算法,但这些标准中的某些内容是可选的。特别是,对非规范数字(由.Machine给出的范围之外的数字)的支持可能在平台之间甚至在单个平台上的计算之间不同。
第二个表明无限运算应该“有效”:
在R中,基本上所有数学函数(包括基本算术)都应该与+/- Inf和NaN一起作为输入或输出正常工作。
然而,第三个表明涉及NA
的任何逻辑比较返回NA
:
缺失值(NA)和NaN值甚至被认为是不可比较的,因此涉及它们的比较将总是导致NA。
所以问题不是某些东西比Inf
“更大”,而是当你用缺失值调用比较时R而不是R返回缺失值。