Kod jest takDlaczego x [NA] daje wektor NA o tej samej długości co x?
x <- 1:5
x[NA]
Dlaczego produkować 5 agencjom krajowym?
Kod jest takDlaczego x [NA] daje wektor NA o tej samej długości co x?
x <- 1:5
x[NA]
Dlaczego produkować 5 agencjom krajowym?
Odpowiedź na to pytanie ma dwie strony:
Jak NA interpretowane podczas indeksowania matryc?
W one of the links dostarczonych przez @alexis_laz, znalazłem bardzo dobrze zorganizowany wyjaśnienie, w jaki TRUE
, FALSE
i NA
są interpretowane podczas indeksowania matryc:
Logical
indeksy powiedziećR
które elementy aby włączyć lub wyłączyć.Masz trzy opcje:
TRUE
,FALSE
iNA
Służą one do wskazania, czy indeks reprezentowane w tej pozycji powinny być uwzględnione. Innymi słowy:
TRUE == "Include the elment at this index" FALSE == "Do not include the element at this index" NA == "Return NA instead of this index" # loosely speaking
na przykład:
x <- 1:6 x[ c(TRUE, FALSE, TRUE, NA, TRUE, FALSE)] # [1] 1 3 NA 5
Ważnym szczegółem jest to domyślny tryb przechowywania izolowanym NA
wartości logiczne (spróbuj typeof(NA)
). Możesz wybrać tryb przechowywania urządzenia NA
, korzystając z NA_integer_
, NA_real_
(dla podwójnego), NA_complex_
lub NA_character_
.
Dlaczego 5 NA
i nie tylko 1?
Gdy długość indeksów jest mniejsza niż długość wektora x
, indeksowanie rozpocznie się również wskaźnik wartości w x
, które nie zostały jeszcze zindeksowane. Innymi słowy, R
automatycznie "zawróci" wskaźniki:
(...) Jednak obowiązują standardowe zasady recyklingu. Więc w poprzednim przykładzie, jeśli spadnie ostatni
FALSE
wektor indeks jest recyklingowi, pierwszy element indeksu jestTRUE
i stąd 6. elementemx
jest teraz włączonex <- 1:6 x[c(TRUE, FALSE, TRUE, NA, TRUE)] # [1] 1 3 NA 5 6
Przypomnijmy szczegóły o trybie przechowywania z poprzedniej sekcji. Jeśli wpiszesz x[NA_integer_]
, wtedy znajdziesz inny wynik.
Jakie nowe informacje to dodaje do odpowiedzi w drugim linku dostarczonym przez alexis_laz? – Jaap
Nie dodaje żadnych informacji. Pytanie czekało na odpowiedź i przygotowałem informacje zawarte w komentarzach –
Dobre pytanie. Spróbuj odpowiedzieć sobie, widząc, co zwracają 'x [TRUE]', 'x [FALSE]', 'class (NA)' i 'x [NA_integer_]'. – nicola
'x [c (NA, TRUE)]' może być również oświeceniem, ponieważ wyraźnie pokazuje wektor przetwarzający zarówno wartość "NA", jak i nie -NA ". – thelatemail
Zobacz podobne posty [tutaj] (http://stackoverflow.com/questions/23406124/na-in-subsetter-inconsistent-behavior) i [tutaj] (http://stackoverflow.com/questions/16418689/how-is -true -interpretowany-kiedy-używany-jako-macierz-indeks) –