[英]Why does NA_real_ <= Inf return NA?
将Inf
和-Inf
与NA_real_
进行比较时返回的一些值让我感到惊讶。
具体来说:
NA_real_ <= Inf
#[1] NA
-Inf <= NA_real_
#[1] NA
NA
( help(NA)
)文档的第一句话是
NA
是一个长度为 1 的逻辑常数,其中包含一个缺失值指示符。
我想一定有一些不小于或等于Inf
值和一些不大于或等于-Inf
。 这些价值观是什么? 你如何在 R 中表示它们? 请提供完整列表。
我对NaN
有点熟悉,但是这些不是产生于产生的结果完全超出double
精度可以存储的正确值范围的计算吗? 我不知道Inf - Inf
到底是什么,但它不能大于Inf
。 在double
应该实现的 IEEE 标准中,什么比Inf
大? 该标准是否简单地定义了任何涉及NaN
操作都返回NaN
? 那么为什么 R 不返回NaN
呢? NA
不是 IEEE 754 值,是吗? 也许我误读了文档?
指向您的地方是:
?Arithmetic
?Inf
?`>`
第一个表示通常使用 IEEE 754:
R 依赖于操作系统服务(它们在 FPU 上)进行浮点运算。 在所有当前的 R 平台上都使用 IEC 60559(也称为 IEEE 754)算法,但这些标准中的某些内容是可选的。 特别是,对非正规数(.Machine 给出的范围之外的那些)的支持可能因平台而异,甚至在单个平台上的计算之间也可能不同。
第二个表示无穷大的算术应该“工作”:
在 R 中,基本上所有数学函数(包括基本算术)都应该以 +/- Inf 和 NaN 作为输入或输出正常工作。
但是,第三个表示任何涉及NA
逻辑比较都会返回NA
:
缺失值 (NA) 和 NaN 值甚至被认为是不可比的,因此涉及它们的比较总是会导致 NA。
因此,问题不在于某些东西“大于” Inf
,而是在调用与缺失值的比较时 R 返回缺失值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.