2009-12-01 3 views
22

Есть функция, чтобы получить индекс (номер строки и номер столбца) для матрицы?Значение индекса для матрицы в R?

Предположим, что у меня есть простая матрица:

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

есть простой способ получить обратно что-то вроде C (3, 5) для числа «23», например? В этом случае, говоря which(a==23) просто возвращает 23.

Это похоже на работу, но я уверен, что есть лучший способ:

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 

ответ

38

Просто посмотрел на помощь для which() после этой публикации и нашел ответ : параметр arr.ind.

which(a==23, arr.ind=TRUE) 
    row col 
[1,] 3 5 
Смежные вопросы