为什么NA _real_ <= Inf返回NA?

问题描述 投票:2回答:1

比较Inf-InfNA_real_时返回的一些值让我感到惊讶。

特别:

NA_real_ <= Inf
#[1] NA
-Inf <= NA_real_
#[1] NA

documentationNA)的help(NA)的第一句话是

NA是长度为1的逻辑常量,包含缺失值指示符。

我想必须有一些不小于或等于Inf的值和一些不大于或等于-Inf的值。那些价值观是什么?你如何在R代表他们?请提供完整的清单。

我对NaN有点熟悉,但是这些产生的计算产生的结果是否超出了double可以存储的正确值范围?我不知道Inf - Inf究竟是什么,但它不能大于Inf。什么比Inf应该实施的IEEE标准中的double更大?该标准是否只是定义任何涉及NaN的操作都会返回NaN?那么为什么R不回归NaNNA不是IEEE 754的价值,是吗?也许我误读了documentation

r compare nan na infinity
1个回答
2
投票

指向你的地方是:

?Arithmetic
?Inf
?`>`

第一个表明通常使用IEEE 754:

R依赖于OS服务(以及FPU上的服务)进行浮点运算。在所有当前的R平台上,使用IEC 60559(也称为IEEE 754)算法,但这些标准中的某些内容是可选的。特别是,对非规范数字(由.Machine给出的范围之外的数字)的支持可能在平台之间甚至在单个平台上的计算之间不同。

第二个表明无限运算应该“有效”:

在R中,基本上所有数学函数(包括基本算术)都应该与+/- Inf和NaN一起作为输入或输出正常工作。

然而,第三个表明涉及NA的任何逻辑比较返回NA

缺失值(NA)和NaN值甚至被认为是不可比较的,因此涉及它们的比较将总是导致NA。

所以问题不是某些东西比Inf“更大”,而是当你用缺失值调用比较时R而不是R返回缺失值。

© www.soinside.com 2019 - 2024. All rights reserved.