繁体   English   中英

R中生成对称方阵

[英]Generate square symmetric matrix in R

我在 R 中有一个矩阵,如下所示:

dat <- matrix(c(2,3,5,7,8,4), ncol = 6)
colnames(dat) <- c("A(1,1)", "A(1,2)", "A(1,3)", "A(2,2)", "A(2,3)", "A(3,3)")

如何根据apply function 创建一个具有以下形式的对称方阵:

A(1,1) A(1,2) A(1,3)
A(2,1) A(2,2) A(2,3)
A(3,1) A(3,2) A(3,3)

注意A(1,2)=A(2,1)

这不是基于apply但它展示了如何使用lower.triupper.tri在给定元素向量的情况下创建对称矩阵。 它显示了 3x3 的情况,但很容易推广到更大的n

dat <- matrix(rep(0,9),nrow = 3)
dat[lower.tri(dat,diag = TRUE)] <- c(2,3,5,7,8,4)
dat[upper.tri(dat)] <- t(dat)[upper.tri(dat)]
print(dat)

结果:

     [,1] [,2] [,3]
[1,]    2    3    5
[2,]    3    7    8
[3,]    5    8    4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM