Jaka jest różnica między NaN a NA?


48

Chciałbym wiedzieć, dlaczego niektóre języki, takie jak R, mają zarówno NA, jak i NaN. Jakie są różnice, czy są jednakowo takie same? Czy naprawdę trzeba mieć NA?


5
Powiedziałbym, że NA jest bardziej „symbolem zastępczym”; NaN służy do celów arytmetycznych (IEEE).
JM nie jest statystykiem

@JM. dobry sposób na podsumowanie.
suncoolsu,

a także Inf, który oznacza wyrażenia takie jak na przykład 1/0 ...
Karsten W.

Wyjaśniono to w dokumentacji tutaj .
gung - Przywróć Monikę

1
Myślę, że to pytanie lepiej nadaje się do przepełnienia stosu, ale pytanie jest za stare, aby przeprowadzić migrację.
Zach

Odpowiedzi:


44

? is.nan

? is.na

? NA

? NaN

Powinien odpowiedzieć na twoje pytanie.

Ale w skrócie:

NaN oznacza - oznacza brak liczby00

NA jest ogólnie interpretowane jako brakująca wartość i ma różne formy - NA_integer_, NA_real_ itp.

Dlatego NaN NA i istnieje zapotrzebowanie na NaN i NA.


21
Warto zauważyć, że is.na()powraca TRUEzarówno dla NA i Nan, która różni się od is.nan()np is.na(c(0/0,NA)) vs. is.nan(c(0/0,NA)) .
chl

11

NA dotyczy brakujących danych. NaN, jak powiedział JM, służy celom arytmetycznym. NaN jest zwykle produktem niektórych operacji arytmetycznych, takich jak 0/0. NA zwykle jest zadeklarowane z wyprzedzeniem lub jest produktem działania, gdy próbujesz uzyskać dostęp do czegoś, czego nie ma:

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

5

Myślę o NA oznaczającym „Niedostępne”, podczas gdy NaN to „Nie liczba”, chociaż jest to bardziej mnemoniczne niż wyjaśnienie. Nawiasem mówiąc, nie znam żadnego innego języka niż R (może Splus?), Który ma oba. Na przykład Matlab ma tylko NaN.


Zrobiłeś (krytyczną) literówkę. „Na N to„ nie liczba ””
Peter Smit

@Peter Smit: ouch, dzięki. mój serwer X opóźnia naciśnięcia klawiszy ...
shabbychef

2
Kilka języków ma równoważne konstrukcje. Na przykład PHP i JavaScript mają null i NaN.
nico

2

NA oznacza, że ​​błąd już występował podczas importowania arkusza kalkulacyjnego do R. NaN oznacza, że ​​spowodowałeś błąd po zaimportowaniu danych. To trzeci rodzaj błędu, który jest naprawdę trudny do uchwycenia.

:-)


3
jakie są pierwsze dwa?
David LeBauer,

Byłem glib, ale miałem na myśli - NA to pierwszy rodzaj błędu, często spowodowany przez coś w importowanych danych niewłaściwego typu - np. Pole numeryczne zawierające interpunkcję / litery / białe znaki lub literówki / zmiany wielkości liter w poziomach czynnika. NaN jest drugim błędem, który częściej zdarza się, gdy transformujesz dane w R. Trzeci błąd to dane, które mają wartość liczbową, ale z tego czy innego powodu są niewłaściwe i są mniej zauważalne. Ponownie, nie ma to być rygorystyczna kategoryzacja, tylko nieformalna obserwacja.
f1r3br4nd

0

NA = Niedostępne

NaN = brak liczby

Myślę, że kiedy rozszerzymy akronimy, powinno to być oczywiste.


2
Witamy w CV! Dziękujemy za odpowiedź, ale najpierw przeczytaj istniejące odpowiedzi i zastanów się, czy dodajesz coś nowego.
Scortchi - Przywróć Monikę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.