-->

在R,为什么is.numeric(NAN)打印“真”?(In R, why does is.nume

2019-09-26 02:04发布

NaN`的意思是“不是一个数字”。 但是我发现的结果

is.numeric(NaN)

[1] "TRUE"

任何人都知道为什么吗? 我想结果应该是FALSE

Answer 1:

“不是数”并不真正意味着它不是一个数字。 这是一个浮点数的特殊编码。 见ANSI / IEEE 754浮点标准 ,或楠简单的维基百科页面。

这是所有计算语言的通用标准和R的操控性也不例外。

在R, typeof(NaN)给出“双”,和mode(NaN)给出“数字”。 现在,如果你读?is.numeric ,你看到is.numeric(x)返回TRUE ,如果x模式为“数字”,而不是一个因素。

IEEE标准定义了三个特殊的浮点数, Inf-InfNaN

前两个有一个明确的数学含义:正无穷大和负无限。 虽然它们不是实数部分,它们是定义明确的限制 。 例如, 1 / 0Inf

那么,是什么NaN意思吗? 正是它没有明确的实数 。 简单的情况是

0 / 0  # can be either Inf or -Inf
sqrt(-1)  # not well-defined on real number set
Inf - Inf  # can not be decided, can be 0, Inf or -Inf

在数值计算,如果结果不能以普通的实数,或写Inf-Inf ,它表示为NaN 。 在这一点上,任何浮点数之间的算术变得完全表达的。 NaN是在这方面相当丰富,它的意思是“出了问题”。


注意,与NA具有各种类型( NA_real_NA_integer_等), NaN仅具有一个为浮点数类型。 任何逻辑,字符,整数值不浮点数因此不能够NaN 。 NA的定义是不是一个普遍标准和R都有自己的。



文章来源: In R, why does is.numeric(NaN) print “TRUE”?
标签: r nan numeric