矩阵操作以计算上三角矩阵和下三角矩阵的最小值

3

我希望创建一个最小值,用于比较矩阵的下三角和上三角。例如:

 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) 

我希望创建一个这样的矩阵,对角线元素设置为0,其余元素为上下元素的最小值。例如(A(1,2),A(2,1)),即min(4,1)=1。这将得到矩阵B。请问有谁能建议如何实现这种操作?
2个回答

3
我认为你想使用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

请按照以下方式操作:

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

首先获取A和转置A之间的最小值,然后将对角线元素设置为0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接