Qual è la differenza tra NaN e NA?


48

Vorrei sapere perché alcune lingue come R hanno sia NA che NaN. Quali sono le differenze o sono ugualmente uguali? È davvero necessario avere NA?


5
Direi che NA è più un "segnaposto"; NaN è per scopi aritmetici (IEEE).
JM non è uno statistico il

@JM. buon modo per riassumere.
suncoolsu,

e c'è anche Inf, che sta per espressioni come ad esempio 1/0 ...
Karsten W.

È spiegato nella documentazione qui .
gung - Ripristina Monica

1
Penso che questa domanda sia più adatta allo overflow dello stack, ma la domanda è troppo vecchia per migrare.
Zach,

Risposte:


44

? is.nan

? is.na

?N / A

? NaN

Dovrebbe rispondere alla tua domanda.

Ma, in breve:

NaN significa 00

NA viene generalmente interpretato come un valore mancante e ha varie forme: NA_integer_, NA_real_, ecc.


21
Da notare, is.na()ritorni TRUEsia per NA che per NaN, che differisce da is.nan()es . is.na(c(0/0,NA)) Vs. is.nan(c(0/0,NA))
chl

11

NA è per dati mancanti. NaN, come diceva JM, è a scopo aritmetico. NaN è solitamente il prodotto di alcune operazioni aritmetiche, come ad esempio 0/0. In genere NA viene dichiarato in anticipo o è un prodotto operativo quando si tenta di accedere a qualcosa che non è presente:

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

5

Penso a NA che sta per 'Not Available', mentre NaN è 'Not a Number', sebbene questo sia più mnemonico che di spiegazione. A proposito, non conosco nessun linguaggio diverso da R (forse Splus?) Che ha entrambi. Matlab, ad esempio, ha solo NaN.


Hai fatto un refuso (critico). "Na N è 'Not a Number'"
Peter Smit

@Peter Smit: ahi, grazie. il mio server X è in ritardo di sequenze di tasti ...
shabbychef,

2
Diverse lingue hanno costrutti equivalenti. Ad esempio PHP e Javascript hanno null e NaN.
nico,

2

NA indica che l'errore era già presente quando hai importato il foglio di calcolo in R. NaN indica che hai causato l'errore dopo aver importato i dati. È il terzo tipo di errore che è davvero difficile da rilevare.

:-)


3
quali sono i primi due?
David LeBauer,

Stavo facendo loquace, ma quello che intendevo dire era: NA è il primo tipo di errore, spesso causato da qualcosa nei dati importati che è del tipo sbagliato, ad esempio un campo numerico contenente punteggiatura / lettere / spazi bianchi o errori di battitura / variazione del caso nei livelli di un fattore. NaN è il secondo errore, che si verifica più spesso quando si trasformano i dati all'interno di R. Il terzo errore sono i dati che hanno un valore numerico, ma per un motivo o per l'altro quello sbagliato, ed è meno immediatamente evidente. Ancora una volta, questo non vuole essere una categorizzazione rigorosa, ma solo un'osservazione informale.
f1r3br4nd

0

NA = Non disponibile

NaN = Non un numero

Penso che una volta espansi gli acronimi, dovrebbe essere autoesplicativo.


2
Benvenuto in CV! Grazie per aver risposto, ma prima leggi le risposte esistenti e valuta se stai aggiungendo qualcosa di nuovo.
Scortchi - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.