2009-12-01 111 views
22

是否有函數獲取矩陣的索引(行號和列號)?R中矩陣的索引值?

假設我有一個簡單的矩陣:

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 

回答

38

只是看着幫助which()發佈此之後,發現答案:arr.ind參數。

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