2016-01-05 13 views
7

Właśnie zobaczyłem, co wydawało się bardzo dobrym pytaniem, które zostało usunięte i ponieważ podobnie jak oryginalny ankieter nie mogłem znaleźć duplikatu, zamieszczam go ponownie.Ustawienie NA w macierzy przy użyciu innej macierzy logicznej

Załóżmy, że mam prostą matrycę ("m"), którą chcę indeksować za pomocą innej macierzy logicznej ("i"), zachowując oryginalną strukturę matrycy w stanie nienaruszonym. Coś takiego:

# original matrix 
m <- matrix(1:12, nrow = 3, ncol = 4) 

# logical matrix 
i <- matrix(c(rep(FALSE, 6), rep(TRUE, 6)), nrow = 3, ncol = 4) 

m 
i 

# Desired output: 
matrix(c(rep(NA,6), m[i]), nrow(m), ncol(m)) 
# however this seems bad programming... 

Korzystanie m[i] powraca wektor i nie macierzy. Jaki jest właściwy sposób, aby to osiągnąć?

+1

Podjęłam zamiar przypisania NA z określonego wyniku oraz z faktu, że zarówno jego rozwiązanie i mój zastępca dały ten sam rezultat. –

Odpowiedz

7

Oryginalny plakat dodał komentarz mówiący, którą wymyśliliśmy rozwiązanie, a następnie niemal natychmiast usunięty go:

m[ !i ] <- NA 

Zacząłem odpowiedź że oferowane nieco inne rozwiązanie, korzystając z funkcji is.na<-:

is.na(m) <- !i 

Oba rozwiązania wydają się być rozsądnym kodem R, który polega na logicznym indeksowaniu. (Struktura bazowa i nie jest w rzeczywistości oparta na wektorach o odpowiedniej długości i wpisach, zachowałaby również strukturę macierzy m.)

Powiązane problemy