R中矩阵的指数值?

Sha*_*ane 23 filtering r matrix

是否有函数来获取矩阵的索引(行号和列号)?

假设我有一个简单的矩阵:

a <- matrix(1:50, nrow=5)
Run Code Online (Sandbox Code Playgroud)

例如,是否有一种简单的方法可以获得数字为"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
Run Code Online (Sandbox Code Playgroud)

Sha*_*ane 42

只是看了一下which()发布后的帮助,找到了答案:arr.ind参数.

which(a==23, arr.ind=TRUE)
     row col
[1,]   3   5
Run Code Online (Sandbox Code Playgroud)