Quelle est la différence entre NaN et NA?


48

Je voudrais savoir pourquoi certaines langues comme R ont NA et NaN. Quelles sont les différences ou sont-elles également identiques? Est-il vraiment nécessaire d'avoir NA?


5
Je dirais que NA est plus un "espace réservé"; NaN est utilisé à des fins arithmétiques (IEEE).
JM n'est pas un statisticien

@JM. bon moyen de résumer.
suncoolsu

et il y a aussi Inf, qui représente des expressions telles que par exemple 1/0 ...
Karsten W.

C'est expliqué dans la documentation ici .
Gay - Rétablir Monica

1
Je pense que cette question convient mieux au dépassement de capacité de la pile, mais la question est trop ancienne pour migrer.
Zach

Réponses:


44

? is.nan

? is.na

?N / A

? NaN

Devrait répondre à votre question.

Mais en bref:

NaN signifie - signifie pas un nombre00

NA est généralement interprété comme une valeur manquante et se présente sous différentes formes - NA_integer_, NA_real_, etc.

Par conséquent, NaN NA et il existe un besoin pour NaN et NA.


21
Il est à noter que les is.na()retours TRUEpour NA et NaN, qui diffèrent de, is.nan()par exemple, is.na(c(0/0,NA)) contre is.nan(c(0/0,NA)) .
chl

11

NA est pour les données manquantes. NaN, comme JM a dit est à des fins arithmétiques. NaN est généralement le produit d'une opération arithmétique, telle que 0/0. NA est généralement déclaré à l'avance ou est un produit opérationnel lorsque vous essayez d'accéder à quelque chose qui n'y est pas:

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

5

Je pense à NA pour «Not Available», alors que NaN est «Not a Number», bien que ce soit plus mnémonique qu'explication. À propos, je ne connais aucune autre langue que R (peut-être Splus?) Qui possède les deux. Matlab, par exemple, n'a que NaN.


Vous avez fait une faute de frappe (critique). "Na N n'est pas un nombre" "
Peter Smit

@Peter Smit: ouch, merci. Mon serveur X est à la traîne ...
shabbychef

2
Plusieurs langues ont des constructions équivalentes. Par exemple PHP et Javascript ont null et NaN.
nico

2

NA signifie que l'erreur était déjà présente lorsque vous avez importé la feuille de calcul dans R. NaN signifie que vous avez provoqué l'erreur après l'importation des données. C'est le troisième type d'erreur qui est vraiment difficile à détecter.

:-)


3
quels sont les deux premiers?
David LeBauer

J'étais désinvolte, mais ce que je voulais dire était - NA est le premier type d'erreur, souvent causé par un type incorrect dans les données importées - par exemple, un champ numérique contenant des signes de ponctuation / lettres / espaces ou des fautes de frappe / casse-variation dans les niveaux d'un facteur. NaN est la deuxième erreur, qui survient plus souvent lorsque vous transformez des données dans R. La troisième erreur concerne des données qui ont une valeur numérique, mais pour une raison ou une autre, la mauvaise, et qui est moins immédiatement perceptible. Là encore, il ne s’agit pas d’une catégorisation rigoureuse, mais simplement d’une observation informelle.
f1r3br4nd

0

NA = non disponible

NaN = pas un nombre

Je pense qu'une fois les acronymes développés, cela devrait être explicite.


2
Bienvenue sur CV! Merci de répondre, mais s'il vous plaît, lisez d'abord les réponses existantes et déterminez si vous ajoutez quelque chose de nouveau.
Scortchi - Réintégrer Monica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.