2011-12-07 3 views
6

Sto cercando di capire un modo per eliminare righe di matrice se una cella in quella riga soddisfa una determinata caratteristica. Per esempio:R: Come posso eliminare le righe se un elemento di una riga soddisfa determinate caratteristiche?

> mm <- matrix(c(1,2,3,2,3,4,1,2,3,4),5,2) 
> mm 
    [,1] [,2] 
[1,] 1 4 
[2,] 2 1 
[3,] 3 2 
[4,] 2 3 
[5,] 3 4 

Voglio eliminare righe se l'elemento di colonna 1 ° in quella riga è 2. Alla fine voglio che questo:

[,1] [,2] 
[1,] 1 4 
[2,] 3 2 
[3,] 3 4 

Come potrei fare questo?

E che dire di un metodo più generale se invece di eliminare tutte le righe il primo elemento di colonna è 2, ho bisogno di eliminare le righe il cui primo elemento di colonna corrisponde ad un insieme di numeri che sono contenuti in un elenco? Per esempio

delete_list <- c(2,3) 

Qual è il modo migliore per farlo?

Grazie in anticipo.

+0

Contenuto in [Come selezionare le righe da data.frame con 2 condizioni] (http://stackoverflow.com/questions/1536590/how-to-select-rows-from-data-frame-with-2-conditions) (e in ogni introduzione al manuale R mai scritto). –

risposta

14

Basta usare

mm2 <- mm[mm[,1]!=2,] 

Questo funziona perché

mm[,1] != 2 

rendimenti

[1] TRUE FALSE TRUE FALSE TRUE 

ed essenzialmente si utilizza questa matrice booleana di scegliere le righe da scegliere.

2

Non testato ...

newmat <- mm[mm[,1]!=2,] 

è fondamentalmente quello che penso che stai cercando.

Modifica: maledizione, ninja di un minuto!