NaN和NA有什么区别?


48

我想知道为什么像R这样的某些语言同时具有NA和NaN。有什么区别或相等?真的需要NA吗?


5
我会说NA更像是一个“占位符”;NaN用于(IEEE)算术目的。
JM不是统计学家

@JM。总结的好方法。
suncoolsu

还有Inf,它代表表达式,例如1/0 ...
Karsten W.

此处的文档中对此进行了说明。
gung-恢复莫妮卡

1
我认为这个问题更适合堆栈溢出,但是这个问题太老了,无法移植。
Zach

Answers:


44

NANA

Na

应该回答你的问题。

但是,总之:

NaN表示 -代表非数字00

通常将NA解释为缺失值,并具有多种形式-NA_integer_,NA_real_等。

因此,NaN NA,因此需要NaN和NA。


21
值得注意的是,is.na()返回TRUE两个NA和NaN的,这不同于is.nan()is.na(c(0/0,NA)) is.nan(c(0/0,NA))
chl 2010年

11

NA用于丢失数据。正如JM所说,NaN是用于算术目的的。NaN通常是某些算术运算的乘积,例如0/0。通常,NA是预先声明的,或者当您尝试访问不存在的内容时是操作的产物:

 > a <- c(1,2)
 > a[3]
   [1] NA 

5

我认为NA代表“不可用”,而NaN则是“非数字”,尽管这比解释更容易记忆。顺便说一句,除了R(也许是Splus?)之外,我没有其他语言同时具备这两种语言。例如,Matlab仅具有NaN。


您打了(严重)错字。“ Na N不是'数字'”
Peter Smit 2010年

@Peter Smit:哎呀,谢谢。我的X服务器滞后了按键操作
shabbychef 2010年

2
几种语言具有等效的构造。例如,PHP和Javascript具有null和NaN。
nico 2010年

2

NA表示将电子表格导入R中时已经存在该错误。NaN表示导入数据后导致该错误。这是第三种很难发现的错误。

:-)


3
前两个是什么?
大卫·勒鲍尔

我当时是glib,但我的意思是-NA是第一类错误,通常是由于导入数据中的某些错误类型引起的-例如,包含标点符号/字母/空格或错别字/大小写差异的数字字段在一个因素的水平。NaN是第二个错误,当您在R中转换数据时,更经常发生。第三个错误是确实具有数字值的数据,但由于某种原因或错误的原因,这种错误不太明显。同样,这并不意味着要进行严格的分类,而只是非正式的观察。
f1r3br4nd

0

NA =不可用

NaN =不是数字

我认为,一旦我们扩展了首字母缩写词,它应该可以自我解释。


2
欢迎来到简历!感谢您的回答,但请先阅读现有答案,并考虑是否要添加任何新内容。
Scortchi-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.