【发布时间】:2021-04-23 13:49:49
【问题描述】:
在我看来,这个问题应该已经回答过了,但我在任何地方都找不到。如何在R中提取对称矩阵的上三角形?我想计算这样一个矩阵的平均值,但对角线中没有 0,因为它们会影响我的结果。 我有这个代码:
library(Matrix)
matrix <- as.matrix(distObject)
m[lower.tri(m)] <- 0
triu(m)
目前这让我:
V2 V3 V4 V5 V6 V7
V2 0.0000000 0.4946237 0.6834532 0.6653992 0.6881029 0.6438849
V3 . 0.0000000 0.7183673 0.6531532 0.6959707 0.6458333
V4 . . 0.0000000 0.4024896 0.6845238 0.7075472
V5 . . . 0.0000000 0.6901840 0.6843854
V6 . . . 0.0000000 0.3821429
V7 . . . . . 0.0000000
但是,我需要类似的东西:
V3 V4 V5 V6 V7
V3 0.4946237 0.6834532 0.6653992 0.6881029 0.6438849
V4 . 0.7183673 0.6531532 0.6959707 0.6458333
V5 . . 0.4024896 0.6845238 0.7075472
V6 . . . 0.6901840 0.6843854
V7 . . . 0.3821429
如果有人能帮忙就太好了!
【问题讨论】:
-
在
lower.tri调用之后可能会添加m <- m[-nrow(m),-1]但确实需要一个可重现的示例 -
哇,效果很好!谢谢!
-
重读您的问题,如果您“想要计算这样一个矩阵的平均值,但对角线中没有 0”,
mean(m[upper.tri(m, diag=FALSE)])就足够了(这就是与mean(distObject)? 相同,即没有稀疏矩阵的东西
标签: r extract triangular