2016-11-05 12 views
3

Ich möchte einen Mindestwert erstellen, der die untere und obere Dreiecksmatrix einer Matrix vergleicht. Zum BeispielMatrixmanipulation zur Berechnung des Mindestwerts der oberen und unteren Dreiecksmatrix

A = matrix(c(2, 4, 3, 1, 5, 7,4,2,4), nrow=3, ncol=3,byrow = TRUE) 
B= matrix(c(0,1,3,1,0,2,3,2,0), nrow=3, ncol=3,byrow= TRUE) 

würde Ich mag eine Matrix wie diese mit Diagonalelementen auf 0 und dem Rest sein Minimum an oberen und unteren Elementen festgelegt zu schaffen. Zum Beispiel (A (1,2), A (2,1)) was min (4,1) = 1 ist. Dies führt zu Matrix B. Kann jemand vorschlagen, wie man diese Manipulation erreicht?

Antwort

3

Ich denke, die Sie verwenden möchten pmin:

A <- matrix(c(2, 4, 3, 1, 5, 7,4,2,4), nrow=3, ncol=3,byrow = TRUE) 
diag(A) <- 0 
output <- pmin(A, t(A)) 
output 
[,1] [,2] [,3] 
[1,] 0 1 3 
[2,] 1 0 2 
[3,] 3 2 0 
2

es wie folgt tun:

B = ifelse(A<t(A),A,t(A)) 
diag(B) = 0 

> B 
    [,1] [,2] [,3] 
[1,] 0 1 3 
[2,] 1 0 2 
[3,] 3 2 0 

Zuerst das Minimum zwischen A erhalten und A transponieren, stellen dann die Diagonalelemente auf 0

Verwandte Themen