为啥 NA_real_ <= Inf 返回 NA?
Posted
技术标签:
【中文标题】为啥 NA_real_ <= Inf 返回 NA?【英文标题】:Why does NA_real_ <= Inf return NA?为什么 NA_real_ <= Inf 返回 NA? 【发布时间】:2019-08-21 00:33:21 【问题描述】:将Inf
和-Inf
与NA_real_
比较时返回的一些值让我感到惊讶。
具体来说:
NA_real_ <= Inf
#[1] NA
-Inf <= NA_real_
#[1] NA
documentation 的第一句为NA
(help(NA)
) 是
NA
是一个长度为 1 的逻辑常数,其中包含一个缺失值指示符。
我想一定有一些值不小于或等于Inf
和一些值不大于或等于-Inf
。这些价值观是什么?你如何在 R 中表示它们?请提供完整列表。
我对@987654332@ 有点熟悉,但这些计算产生的结果是否超出了double
可以存储的适当值的范围?我不知道Inf - Inf
到底是什么,但它不能大于Inf
。在double
应该实现的IEEE 标准中,有什么比Inf
更大?该标准是否简单地定义任何涉及NaN
的操作都返回NaN
?那为什么 R 不返回NaN
? NA
不是 IEEE 754 值,是吗?也许我误读了documentation?
【问题讨论】:
【参考方案1】:你要指的地方是:
?Arithmetic
?Inf
?`>`
第一个表示一般使用IEEE 754:
R 依赖于操作系统服务(它们依赖于 FPU)来进行浮点运算。在所有当前的 R 平台上,都使用 IEC 60559(也称为 IEEE 754)算术,但这些标准中的某些内容是可选的。特别是,对非正规数(超出 .Machine 给出的范围)的支持可能因平台而异,甚至在单个平台上的计算之间也可能不同。
第二个表示无穷大的算术应该“有效”:
在 R 中,基本上所有数学函数(包括基本算术)都应该在 +/- Inf 和 NaN 作为输入或输出时正常工作。
但是,第三个表示任何涉及NA
的逻辑比较都会返回NA
:
缺失值 (NA) 和 NaN 值即使与它们自身也被视为不可比较,因此涉及它们的比较总是会导致 NA。
所以问题不在于某些东西“大于”Inf
,而是当您调用与缺失值的比较时,R 返回缺失值。
【讨论】:
关于“任何涉及NA
的逻辑比较都返回NA
:”is.finite(NA_real_)
返回FALSE
(不是NA
)。如果这不是一个逻辑比较,它属于哪个类别(根据 R 的逻辑)?我试图找到一种逻辑模式,这样我就不必每次需要了解这些东西时都查找它们。以上是关于为啥 NA_real_ <= Inf 返回 NA?的主要内容,如果未能解决你的问题,请参考以下文章
在建项目时路径都设置好了,为啥在eclipse中运行maven项目时jar包没有到lib目录下,WEB-INF/lib是空的。
在WEB-INF下的jsp页面想要访问webapp下面的css/addBook.css文件为啥不能访问
为啥 (inf + 0j)*1 评估为 inf + nanj?