在矩阵中为索引元素查找相应的行和列编号

时间:2011-09-14 10:19:18

标签: arrays r matrix

我想在矩阵中获取(并存储)相应的行和列号,例如。元素编号12。

adj.m <- diag(c(3,2,1),nrow = 3, ncol = 3)

现在我想找到行并对应于元素4或5或任何。 adj.m[4]返回值(0),但我希望得到并在变量中存储相应的行号和列号(在本例中为1和2)。

我认为这是一个简单的命令,但我无法提出问题,Rseek或Google会回答这个问题。

3 个答案:

答案 0 :(得分:3)

我认为which()会起作用

x <- matrix(nrow=3, ncol=3, data=seq(1:9))
which(x==6, arr.ind=TRUE)

答案 1 :(得分:1)

如果i是您的索引而m是您的矩阵,则可以使用

获取i的行和列
get_row <- function(i, m) (i-1) %% ncol(m) + 1
get_col <- function(i, m) ((i-1) %/% ncol(m)) + 1

用法是,例如,

get_row(4, adj.m)
get_col(4, adj.m)

实际上,伊恩的回答可能更自然。你可以把它包装成一个函数

get_row_col <- function(i, m)
{
  x <- array(seq_along(m), dim = dim(m))
  which(x == i, arr.ind = TRUE)
}

这也适用于两个以上的维度,例如,

m <- array(1:24, dim = 2:4)
get_row_col(1:24, m)

答案 2 :(得分:1)

尝试使用arrayInd函数:

arrayInd(7, .dim=c(3,3))
#      [,1] [,2]
# [1,]    1    3