web-dev-qa-db-ja.com

Rの行列のインデックス値?

行列のインデックス(行番号と列番号)を取得する関数はありますか?

単純な行列があるとします。

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

たとえば、数値「23」に対してc(3、5)のようなものを返す簡単な方法はありますか?この場合、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
_
24
Shane

これを投稿した後、which()のヘルプを見て、答え:arr.indパラメータを見つけました。

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