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
Is there a function to get an index (row number and column number) for a matrix?
Suppose that I have a simple matrix:
a <- matrix(1:50, nrow=5)
Is there an easy way to get back something like c(3, 5) for the number "23", for instance? In this case, saying which(a==23)
just returns 23.
This seems to work but I'm sure that there's a better way:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
发布此文章后,查看了
which()
的帮助,找到了答案:arr.ind 参数。Just looked at the help for
which()
after posting this and found the answer: the arr.ind parameter.