我有矩阵,我想编写一个函数,得到矩阵的元素并返回矩阵内的数字坐标。有人可以提出如何实施它的想法吗?
> A
[,1] [,2]
[1,] 10 20
[2,] 21 17
[3,] 13 25
[4,] 21 11
[5,] 31 24
例如
myfunction的(11)
> 11
> row 3, col 1
答案 0 :(得分:12)
which()
接受一个参数arr.ind=TRUE
,它将返回应用它的逻辑矩阵中所有TRUE
个元素的索引。
## An example matrix
set.seed(1)
m <- matrix(sample(1:100, 10), ncol=2)
m
# [,1] [,2]
# [1,] 27 86
# [2,] 37 97
# [3,] 57 62
# [4,] 89 58
# [5,] 20 6
## An example application
which(m==58, arr.ind=TRUE)
# row col
# [1,] 4 2
答案 1 :(得分:0)
根据Josh的回答,很难给出这样的答案,但是在R中使用算术的一个例子是该形式的自定义函数:
getIndices <- function(flatMatch, nrow) {
rows <- flatMatch %% nrow
cols <- flatMatch %/% nrow + 1
cbind(rows, cols)
}
这当然可以扩展到考虑多维数组,它们的重新形成的对应物,甚至还没有形成的数组。在这些情况下,自定义代码可以提供一些温和的优势,但是R在存储和表示数组方面非常有效,所以这是一个充满活力的例子。