有条件地用下三角形替换矩阵上三角形元素
问题描述:
我试图在下三角形条目等于给定值时用矩阵的下三角形替换矩阵的上三角形。例如,我有以下矩阵:有条件地用下三角形替换矩阵上三角形元素
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.整个上三角任何帮助,将不胜感激。
答
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看起来并不是base的一部分。您可能想要指出它们来自哪个包。
+0
这很有效,谢谢! – user1536464
尝试'z + t(z *(z == 1))' – akrun