[英]R DataFrame into square (symmetric) matrix
我搜索了相关问题以找到答案,但还没有找到解决方案。
所以这是我的示例矩阵:
input <- structure(c(1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0), .Dim = c(3L,
5L), .Dimnames = list(c("X", "Y", "Z"), c("A", "B", "C", "D",
"E")))
我想根据输入矩阵的行将此矩阵转换为正方形矩阵。 所以我想要的输出应如下所示:
output <- structure(c(1, 2, 0, 2, 1, 0, 0, 0, 1), .Dim = c(3L, 3L), .Dimnames = list(c("X", "Y", "Z"), c("X", "Y", "Z")))
当然,对角线取值为1
最重要的是:输出矩阵中i,j的值(如果i!= j)应对应于输入矩阵中同一列中非零值的数量。
因此,X和Y的值应取值为2,因为在同一列A和B中X和Y的值均大于0。
感谢您的努力。 提前致谢!
只需对矩阵及其转置进行矩阵乘法,然后将diag设置为1:
output <- input %*% t(input)
diag(output) <- 1
> output
X Y Z
X 1 2 0
Y 2 1 0
Z 0 0 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.