2009-12-01 14 views
22

¿Existe una función para obtener un índice (número de fila y número de columna) para una matriz?¿Valor del índice para la matriz en R?

Supongamos que tengo una matriz simple:

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

¿Hay una manera fácil de volver algo así como c (3, 5) para el número "23", por ejemplo? En este caso, diciendo which(a==23) sólo devuelve 23.

Esto parece funcionar, pero estoy seguro de que hay una mejor manera:

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 

Respuesta

38

se limitó a la ayuda de which() después de publicar esto y encontró la respuesta : el parámetro arr.ind.

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