如何在R中将数据帧转换为对称矩阵?

时间:2019-07-11 18:42:12

标签: r

这里是一个例子:

 var found = arr.some(r => master.includes(r) >= 0);

如何将其转换为对称矩阵,例如:

 df<-data.frame(x=c(1,1,2),y=c(2,3,3),z=c(0.1,0.2,0.3))
 df
  x y   z
1 1 2 0.1
2 1 3 0.2
3 2 3 0.3

其中可能的df $ x和df $ y对的填充值为df $ z。对角线已填充为单元1。

2 个答案:

答案 0 :(得分:1)

我们可以使用所有matrix创建一个1,然后根据upper.tri的{​​{1}}行填充lower.triorder 。如果可以适当订购df格式的1:2列,这也适用。

"character"

答案 1 :(得分:0)

创建对角矩阵m,然后如下所示设置非对角线:

m <- diag(3)
m[cbind(df$x, df$y)] <- m[cbind(df$y, df$x)] <- df$z
m

给予:

     [,1] [,2] [,3]
[1,]  1.0  0.1  0.2
[2,]  0.1  1.0  0.3
[3,]  0.2  0.3  1.0