R中矩阵的索引值?

lyfkaqu1  于 2023-03-15  发布在  其他
关注(0)|答案(2)|浏览(158)

是否有函数可以获取矩阵的索引(行号和列号)?
假设我有一个简单的矩阵:

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
biswetbf

biswetbf1#

在发布这篇文章后,只是看了一下which()的帮助,就找到了答案:arr.ind参数。

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

vc9ivgsu2#

m = matrix(c(1:16), nrow = 4, byrow = TRUE)
print("Original Matrix:")
print(m)
result = which(m == max(m), arr.ind=TRUE)
print("Row and column of maximum value of the said matrix:")
print(result)
result = which(m == min(m), arr.ind=TRUE)
print("Row and column of minimum value of the said matrix:")
print(result)

相关问题