2009-12-01 10 views
22

Matris için bir dizin (satır numarası ve sütun numarası) almak için bir işlev var mı?R'de matris için dizin değeri?

ben basit bir matris olduğunu varsayalım:

a <- matrix(1:50, nrow=5) 

geri c gibi bir şey elde etmenin kolay bir yolu var mı (3, 5) örneğin "23" sayısı için? Bu durumda, which(a==23) diyerek sadece döner 23.

Bu iş gibi görünüyor ama daha iyi bir yolu var eminim: Sadece bu yazdıktan sonra which() için yardım baktı

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 

cevap

38

ve cevabını buldu : arr.ind parametresi.

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