我想在矩阵中获取(并存储)相应的行和列号,例如。元素编号12。
adj.m <- diag(c(3,2,1),nrow = 3, ncol = 3)
现在我想找到行并对应于元素4或5或任何。
adj.m[4]
返回值(0),但我希望得到并在变量中存储相应的行号和列号(在本例中为1和2)。
我认为这是一个简单的命令,但我无法提出问题,Rseek或Google会回答这个问题。
答案 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