NaN`的意思是“不是一个数字”。 但是我发现的结果
is.numeric(NaN)
是
[1] "TRUE"
任何人都知道为什么吗? 我想结果应该是FALSE
。
NaN`的意思是“不是一个数字”。 但是我发现的结果
is.numeric(NaN)
是
[1] "TRUE"
任何人都知道为什么吗? 我想结果应该是FALSE
。
“不是数”并不真正意味着它不是一个数字。 这是一个浮点数的特殊编码。 见ANSI / IEEE 754浮点标准 ,或楠简单的维基百科页面。
这是所有计算语言的通用标准和R的操控性也不例外。
在R, typeof(NaN)
给出“双”,和mode(NaN)
给出“数字”。 现在,如果你读?is.numeric
,你看到is.numeric(x)
返回TRUE
,如果x
模式为“数字”,而不是一个因素。
IEEE标准定义了三个特殊的浮点数, Inf
, -Inf
和NaN
。
前两个有一个明确的数学含义:正无穷大和负无限。 虽然它们不是实数部分,它们是定义明确的限制 。 例如, 1 / 0
是Inf
。
那么,是什么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都有自己的。