2010-07-07 9 views
22

voglio ottenere gli indici di elementi non a zero in un esempio matrix.forindici find di non elementi zero nella matrice

X <- matrix(c(1,0,3,4,0,5), byrow=TRUE, nrow=2); 

dovrebbe darmi qualcosa di simile

row col 
1 1 
1 3 
2 1 
2 3 

uno può per favore dimmi come farlo?

risposta

41
which(X!=0,arr.ind = T) 
    row col 
[1,] 1 1 
[2,] 2 1 
[3,] 1 3 
[4,] 2 3 

Se arr.ind == TRUE e X è un array, il risultato è una matrice le cui righe sono gli indici degli elementi di X

6

C'è un errore nel codice di esempio - Vero non definito, utilizzare TRUE.

X <-matrix(c(1,0,3,4,0,5), byrow = TRUE, nrow = 2) 

che dovrebbe fare:

which(!X == 0) 
X[ which(!X == 0)] 
#[1] 1 4 3 5 

per ottenere gli indici riga/Col:

row(X)[which(!X == 0)] 
col(X)[which(!X == 0)] 

usare quelle per indicizzare nuovamente dentro la matrice:

X[cbind(row(X)[which(!X == 0)], col(X)[which(!X == 0)])] 
    #[1] 1 4 3 5 
Problemi correlati