2013-07-12 2 views
43

행렬의 최대 요소 값과 그 위치 (행렬의 행 및 열 ID)를 찾고 싶습니다.행렬에서 최대 값의 행 및 열 인덱스 찾기

다음 함수를 사용하여 행렬의 행과 열을 반환합니다.

이것은 악의적 인 해킹처럼 보입니다. 이것은 내가 본래의 방법이 없을 것 같은 일종의 것입니다. 거기에 더/R 방법은 있습니까?

mm <- matrix(rnorm(100), 10, 10) 
maxCords <- matxMax(mm) 
mm[maxCords] 
+0

해결책은 동일하지만 검색을 수행 한 결과 최대 및 최소 (최대 분을 검색하는 것으로 기억해야 함) 아래에 솔루션이있는 경우가 있다고 생각합니다. 또한 기능 (이 경우 중복 됨)은 교육적 가치가있을 수 있습니다. – ricardo

답변

83

당신은이에 대한

## 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 
+3

두 번째 최대 값의 위치를 ​​찾는 방법은 무엇입니까? 두 번째 최대 값은 첫 번째 최대 값과 같을 수 있으며,이 경우 첫 번째 최대 값과 정확히 일치하는 두 번째 최대 값의 위치를 ​​얻고 싶습니다. – user2543622

+3

@ user2543622, 설치시 예제에서 제안 된 솔루션을 사용해 보셨습니까? 제안 된 솔루션은 최대 값과 동일한 행렬의 모든 요소 목록을 제공합니다. 따라서 동점이 있다면 모두 얻을 수 있습니다. – QuantIbex

0

어떻게 할 수있는 다음과 같이 내가 사용

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

은 다음과 같습니다

여기 내 기능입니까?

which.min(mm) 
which.max(mm) 
+5

'which.min'은'which.max'가 아닌 배열 인덱스를 반환합니다. 둘 다 행렬을 벡터로 취급하고 행 및 열 색인 대신 벡터 색인을 반환합니다. –

관련 문제