有条件地用下三角形替换矩阵上三角形元素

时间:2015-07-12 18:43:08

标签: r matrix

当下三角形条目等于给定值时,我试图用矩阵的下三角形替换矩阵的上三角形。例如,我有以下矩阵:

0 0 0 
1 0 0 
2 1 0 

我需要将所有等于1的下三角形条目复制到上三角形。结果应该是:

0 1 0 
1 0 1 
2 1 0 

我尝试使用:

library(gdata)

z <- matrix(c(0,1,2,0,0,1,0,0,0),nrow=3,ncol=3)
upperTriangle(z) <- t(lowerTriangle(z)[lowerTriangle(z)==1])

但这会将整个上三角形替换为1.对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:4)

z <- matrix(c(0,1,2,0,0,1,0,0,0),nrow=3,ncol=3)
z[upper.tri(z) & t(z) == 1] = 1

适合我。

注意:你的upperTriangel和lowerTriangle似乎不是基础的一部分。您可能想要指出它们来自哪个包。