2015-07-12 130 views
0

我試圖在下三角形條目等於給定值時用矩陣的下三角形替換矩陣的上三角形。例如,我有以下矩陣:有條件地用下三角形替換矩陣上三角形元素

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.整個上三角任何幫助,將不勝感激。

+3

嘗試'z + t(z *(z == 1))' – akrun

回答

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看起來並不是base的一部分。您可能想要指出它們來自哪個包。

+0

這很有效,謝謝! – user1536464