Valeur d'Index pour la matrice en R?

Existe-t-il une fonction pour obtenir un index (numéro de ligne et numéro de colonne) pour une matrice?

Supposons que j'ai une matrice simple:

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

Existe-t-il un moyen facile de récupérer quelque chose comme c(3, 5) pour le nombre "23", par exemple? Dans ce cas, dire which(a==23) renvoie juste 23.

Cela semble fonctionner mais je suis sûr qu'il y a un meilleur moyen:

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
23
demandé sur Shane 2009-12-02 01:35:50

1 réponses

Juste regardé l'aide pour which() après avoir posté ceci et trouvé la réponse: l'arr.paramètre ind.

which(a==23, arr.ind=TRUE)
     row col
[1,]   3   5
41
répondu Shane 2009-12-02 14:24:50