R:将矩阵转换为对角线0的对称矩阵

Anu*_*Anu 3 r symmetric matrix

我有一个矩阵如下;

   1  2  3  4  5  
1  0  1  1  0  0  
2  0  0  1  1  0  
3  1  0  0  0  1  
4  0  0  1  0  0   
5  0  1  0  0  0  
Run Code Online (Sandbox Code Playgroud)

我需要得到对称矩阵如下,对角线0;

   1  2  3  4  5  
1  0  1  1  0  0  
2  1  0  1  1  1  
3  1  1  0  1  1  
4  0  1  1  0  0   
5  0  1  1  0  0  
Run Code Online (Sandbox Code Playgroud)

我用for循环尝试了它,当矩阵的大小很小时它很好.但对于大尺寸,需要时间.在R中有没有有效的方法呢?

编辑:第一行在第二和第三列中有1,第一行在第三行中有1.但是对称的第一列也需要在第二行中有1个.类似地,每个行和列应该考虑1来维持对称矩阵.

Sur*_*ren 5

使用逻辑运算

sym_mat <- (mat | t(mat)) * 1
Run Code Online (Sandbox Code Playgroud)

@ chinsoon12的建议很不错.

sym_mat <- +(mat | t(mat))
Run Code Online (Sandbox Code Playgroud)