2009-12-01 11 views
22

Esiste una funzione per ottenere un indice (numero di riga e numero di colonna) per una matrice?Valore indice per matrice in R?

Supponiamo che ho un semplice matrice:

a <- matrix(1:50, nrow=5) 

C'è un modo semplice per tornare qualcosa di simile a C (3, 5) per il numero "23", per esempio? In questo caso, ad esempio which(a==23) ritorna appena 23.

Questo sembra funzionare, ma sono sicuro che ci sia un modo migliore:

matrix.index <- function(a, value) { 
    idx <- which(data.frame(a)==value) 
    col.num <- ceiling(idx/nrow(a)) 
    row.num <- idx - (col.num-1) * nrow(a) 
    return(c(row.num, col.num)) 
} 
> matrix.index(a, 23) 
[1] 3 5 
> matrix.index(a, 50) 
[1] 5 10 

risposta

38

appena guardato l'aiuto per which() dopo questo distacco e ha trovato la risposta : il parametro arr.ind.

which(a==23, arr.ind=TRUE) 
    row col 
[1,] 3 5