2016-11-05 2 views
3

Je souhaite créer une valeur minimale qui compare la matrice triangulaire inférieure et supérieure d'une matrice. Par exempleManipulation de matrice pour calculer la valeur minimale de la matrice triangulaire supérieure et inférieure

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) 

Je voudrais créer une matrice comme celui-ci avec des éléments en diagonale sur 0 et le reste à être au minimum d'éléments supérieurs et inférieurs. Par exemple (A (1,2), A (2,1)) qui est min (4,1) = 1. Cela résulte dans la matrice B. Quelqu'un peut-il suggérer comment réaliser cette manipulation?

Répondre

3

Je pense que vous voulez utiliser 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

le faire comme ceci:

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 

d'abord obtenir le minimum entre A et A transposent, puis définissez les éléments en diagonale à 0.