Was ist der Unterschied zwischen NaN und NA?

48

Ich würde gerne wissen, warum manche Sprachen wie R sowohl NA als auch NaN haben. Was sind die Unterschiede oder sind sie gleich? Muss man wirklich NA haben?

user2479
quelle
5
Ich würde sagen, NA ist eher ein "Platzhalter". NaN ist für (IEEE) arithmetische Zwecke.
JM ist kein Statistiker
@JM. guter Weg, um zusammenzufassen.
Suncoolsu
und es gibt auch Inf, das für Ausdrücke wie zum Beispiel 1/0 ... steht
Karsten W.
Es ist in der Dokumentation hier erklärt .
gung - Wiedereinsetzung von Monica
1
Ich denke, diese Frage ist besser für einen Stapelüberlauf geeignet, aber die Frage ist zu alt, um migriert zu werden.
Zach

Antworten:

44

is.nan

is.na

?N / A

NaN

Sollte deine Frage beantworten.

Aber kurz gesagt:

NaN bedeutet - Steht für keine Zahl00

NA wird im Allgemeinen als fehlender Wert interpretiert und hat verschiedene Formen - NA_integer_, NA_real_ usw.

suncoolsu
quelle
21
Bemerkenswert ist , is.na()kehrt TRUEsowohl für NA und NaN, die sich von is.nan()zB is.na(c(0/0,NA)) vs. is.nan(c(0/0,NA)) .
CHL
11

NA ist für fehlende Daten. NaN, wie JM sagte, ist für arithmetische Zwecke. NaN ist normalerweise das Produkt einer arithmetischen Operation, wie z 0/0. NA wird normalerweise im Voraus deklariert oder ist ein Produkt der Operation, wenn Sie versuchen, auf etwas zuzugreifen, das nicht vorhanden ist:

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

Ich denke an NA, das für 'Not Available' steht, während NaN 'Not a Number' ist, obwohl dies eher eine Gedächtnisstütze als eine Erklärung ist. Übrigens kenne ich keine andere Sprache als R (vielleicht Splus?), Die beides hat. Matlab hat zum Beispiel nur NaN.

shabbychef
quelle
Sie haben einen (kritischen) Tippfehler gemacht. "Na N ist 'keine Zahl'"
Peter Smit
@ Peter Smit: autsch, danke. Mein X-Server
verzögert
2
Mehrere Sprachen haben äquivalente Konstrukte. Zum Beispiel haben PHP und Javascript null und NaN.
nico
2

NA bedeutet, dass der Fehler bereits vorhanden war, als Sie die Tabelle in R. importierten. NaN bedeutet, dass Sie den Fehler nach dem Import der Daten verursacht haben. Es ist die dritte Art von Fehler, die wirklich schwer zu fassen ist.

:-)

f1r3br4nd
quelle
3
Was sind die ersten beiden?
David LeBauer
Ich war glib, aber ich meinte: NA ist der erste Fehlertyp, der häufig durch einen falschen Typ in den importierten Daten verursacht wird, z in den Ebenen eines Faktors. NaN ist der zweite Fehler, der häufiger auftritt, wenn Sie Daten innerhalb von R transformieren. Der dritte Fehler sind Daten, die zwar einen numerischen Wert haben, aber aus dem einen oder anderen Grund falsch sind, und die weniger sofort auffallen. Auch dies ist keine strenge Kategorisierung, sondern nur eine informelle Beobachtung.
f1r3br4nd
0

NA = Nicht verfügbar

NaN = keine Zahl

Ich denke, wenn wir die Akronyme erweitern, sollte es selbsterklärend sein.

ishandutta2007
quelle
2
Willkommen zum Lebenslauf! Vielen Dank für Ihre Antwort. Bitte lesen Sie zuerst die vorhandenen Antworten und überlegen Sie, ob Sie etwas Neues hinzufügen.
Scortchi