¿Cuál es la diferencia entre NaN y NA?

48

Me gustaría saber por qué algunos lenguajes como R tienen NA y NaN. ¿Cuáles son las diferencias o son igualmente iguales? ¿Es realmente necesario tener NA?

usuario2479
fuente
55
Yo diría que NA es más un "marcador de posición"; NaN es para fines aritméticos (IEEE).
JM no es un estadístico
@JM. Buena forma de resumir.
suncoolsu
y también está Inf, que significa expresiones como por ejemplo 1/0 ...
Karsten W.
Se explica en la documentación aquí .
gung - Restablecer Monica
1
Creo que esta pregunta es más adecuada para el desbordamiento de pila, pero la pregunta es demasiado antigua para migrar.
Zach

Respuestas:

44

? is.nan

? is.na

?N / A

?Yaya

Debería responder a su pregunta.

Pero, en resumen:

NaN significa - Significa No es un número0 00 0

NA generalmente se interpreta como un valor perdido y tiene varias formas: NA_integer_, NA_real_, etc.

Por lo tanto, NaN NA y hay una necesidad de NaN y NA.

suncoolsu
fuente
21
Es de destacar que is.na()los rendimientos TRUEde ambos NA y Nan, que se diferencia de is.nan()por ejemplo is.na(c(0/0,NA)) vs is.nan(c(0/0,NA)) .
chl
11

NA es para datos faltantes. NaN, como dijo JM es para fines aritméticos. NaN suele ser el producto de alguna operación aritmética, como 0/0. Normalmente, NA se declara por adelantado o es un producto de la operación cuando intenta acceder a algo que no está allí:

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

Pienso en NA representando 'No disponible', mientras que NaN es 'No es un número', aunque esto es más nemotécnico que explicativo. Por cierto, no conozco otro lenguaje que no sea R (¿quizás Splus?) Que tenga ambos. Matlab, por ejemplo, solo tiene NaN.

shabbychef
fuente
Hiciste un error (crítico). "Na N 'no es un número'"
Peter Smit el
@ Peter Smit: ay, gracias. mi servidor X está rezagado al
presionar las
2
Varios idiomas tienen construcciones equivalentes. Por ejemplo, PHP y Javascript tienen nulo y NaN.
nico
2

NA significa que el error ya estaba allí cuando importó la hoja de cálculo a R. NaN significa que causó el error después de importar los datos. Es el tercer tipo de error que es realmente difícil de detectar.

:-)

f1r3br4nd
fuente
3
¿Cuáles son los dos primeros?
David LeBauer
Estaba siendo simplista, pero lo que quise decir fue: NA es el primer tipo de error, a menudo causado por algo en los datos importados que es del tipo incorrecto, por ejemplo, un campo numérico que contiene puntuación / letras / espacios en blanco o errores tipográficos / variación de mayúsculas y minúsculas en los niveles de un factor. NaN es el segundo error, que ocurre con mayor frecuencia cuando transforma datos dentro de R. El tercer error es datos que tienen un valor numérico, pero por una razón u otra, el incorrecto, y se nota menos inmediatamente. Nuevamente, esto no pretende ser una categorización rigurosa, solo una observación informal.
f1r3br4nd
0

NA = no disponible

NaN = No es un número

Creo que una vez que ampliamos los acrónimos, debería explicarse por sí mismo.

ishandutta2007
fuente
2
Bienvenido a CV! Gracias por responder, pero lea primero las respuestas existentes y considere si está agregando algo nuevo.
Scortchi - Restablece a Monica