2012-04-02 27 views
1

Ich mag würde den Standort und den Wert des größten absoluten Wertes in den off-diagonalen Elementen in einer symmetrischen Matrix in R. findenFinde größten absoluten Wert in off-diagonalen Elementen einer symmetrischen Matrix

Zum Beispiel, mit diesem kleinen 3x3:

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 

ich möchte wissen, -21 als Wert und entweder 1,3 oder 3,1 als Standort

es irgendwelche ordentlich Möglichkeiten, diese anders als durch „brute zu tun Macht" ?

Dank PS

Antwort

5

Wenn es um die Programmierung kommt, ist es immer schwer zu wissen, was jemand anderes ‚Brute-Force‘ sein hält. Das heißt, für eine quadratische Matrix (hier genannt M), können Sie so etwas tun könnte:

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, um es Schlag mich. –

+0

Perfekt. Ich halte das nicht für rohe Gewalt! Vielen Dank –

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 
Verwandte Themen