2012-04-02 16 views
1

を見つけIは、例えばR.は対称行列の非対角要素で最大の絶対値を

対称行列における非対角要素内の最大絶対値の位置と値を見つけたいですこの小さな3×3で:

matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE) 

     [,1] [,2] [,3] 
[1,] 99 11 -21 
[2,] 11 99 13 
[3,] -21 13 99 

私は場所

として値として-21および1,3または3,1のどちらかを知りたい「ブルートによるよりも、この他を行うには、任意のきちんとした方法があります。力 "?

おかげ PS

答えて

5

それはプログラミングに来るとき、それは他の誰かが「ブルートフォース」であると考えるものを知っていることは常に難しいです。

m <- M 
diag(m) <- NA 

(mmax <- max(abs(m), na.rm=TRUE)) 
# [1] -21 

which(abs(m) == mmax, arr.ind=TRUE) 
#  row col 
# [1,] 3 1 
# [2,] 1 3 
+0

+1、それを私にビート:それは言った、(ここではM命名)正方行列のために、あなたはこのような何かを行うことができます。 –

+0

パーフェクト。私は確かにそのブルートフォースを考慮していない!ありがとう –

2
x <- matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE) 
diag(x) <- NA 
which(abs(x) == max(abs(x),na.rm=T), arr.ind=TRUE) 
0
#create matrix 
m <- matrix(c(99,11,-21, 11,99,13, -21,13,99), nrow = 3, ncol=3, byrow=TRUE) 
#remove diagonal 
diag(m) <- 0 

#find locations of max absolute value using norm 
which(abs(m) == norm(m,type="m"),arr.ind=TRUE) 
    row col 
[1,] 3 1 
[2,] 1 3