web-dev-qa-db-fra.com

Rechercher un index de ligne et de colonne de valeur maximale dans une matrice

Je souhaite trouver la valeur d'élément maximale d'une matrice et son emplacement (en ligne et en colonne dans la matrice) 

J'utilise la fonction suivante pour renvoyer la ligne et la colonne de la matrice. 

Cela ressemble à un mauvais bidouillage - c'est le genre de chose où il me manque probablement une méthode native. Y a-t-il un meilleur/ plus R moyen? 

Voici ma fonction: 

matxMax <- function(mtx)
{
    colmn <- which(mtx == max(mtx)) %/% nrow(mtx) + 1
    row <- which(mtx == max(mtx)) %% nrow(mtx)
    return( matrix(c(row, colmn), 1))
}

J'utilise comme suit: 

mm <- matrix(rnorm(100), 10, 10)
maxCords <- matxMax(mm)
mm[maxCords]
48
ricardo

Vous pourriez faire

## Some data
set.seed(123)
mm <- matrix(rbinom(40, 20, 0.5), 8, 5)
mm
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    9   10    8   11   11
# [2,]   12   10    6   11   12
# [3,]    9   14    9   10    6
# [4,]   13   10   14   11   10
# [5,]   13   11   13    9   12
# [6,]    6   10   11    8    8
# [7,]   10    7   11   14    9
# [8,]   13   13   16   13    8

which(mm == max(mm), arr.ind = TRUE)
#      row col
# [1,]   8   3
95
QuantIbex

Que penses-tu de ceux-ci? 

which.min(mm)
which.max(mm)
0
Dongho Yoo