2009-12-01 23 views
22

Gibt es eine Funktion, um einen Index (Zeilen- und Spaltennummer) für eine Matrix zu erhalten?Indexwert für Matrix in R?

Nehmen wir an, ich eine einfache Matrix haben:

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

Gibt es eine einfache Möglichkeit, so etwas wie c zurück zu erhalten (3, 5) für die Zahl "23" zum Beispiel? In diesem Fall sagen which(a==23) gibt nur 23.

Dies scheint zu funktionieren, aber ich bin sicher, dass ein besserer Weg, es gibt:

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 

Antwort

38

Gerade bei der Hilfe suchte which() nach dieser Veröffentlichung und fand die Antwort : der Parameter arr.ind

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