Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 计算上下三角矩阵最小值的矩阵操作_R_Matrix - Fatal编程技术网

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

R 计算上下三角矩阵最小值的矩阵操作,r,matrix,R,Matrix,我想创建一个比较矩阵的上下三角矩阵的最小值。比如说 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)),其最小值(4,1)=1。这导致矩阵B。有人能建议如何实现这种操作吗 我想

我想创建一个比较矩阵的上下三角矩阵的最小值。比如说

 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)),其最小值(4,1)=1。这导致矩阵B。有人能建议如何实现这种操作吗

我想您应该使用
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
A这样做:

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
B=ifelse(A-B
[,1] [,2] [,3]
[1,]    0    1    3
[2,]    1    0    2
[3,]    3    2    0
首先获得A和转置A之间的最小值,然后将对角线元素设置为0