我在 R 中有一个非常大的(大约 9100 万个非零条目)sparseMatrix(),如下所示:
> myMatrix
a b c
a . 1 2
b 1 . .
c 2 . .
我想将其转换为三角矩阵(上或下),但是当我尝试 myMatrix = myMatrix * lower.tri(myMatrix) 时,出现错误,表明 lower.tri() 的“问题太大”。想知道是否有人知道解决方案。谢谢你的帮助!
与其研究矩阵本身,不如研究其summary
:
library(Matrix)
myMatrix <- sparseMatrix(
i = c(1,1,2,3),
j = c(2,3,1,1),
x = c(1,2,1,2))
myMatrix
# 3 x 3 sparse Matrix of class "dgCMatrix"
#
# [1,] . 1 2
# [2,] 1 . .
# [3,] 2 . .
mat.summ <- summary(myMatrix)
lower.summ <- subset(mat.summ, i >= j)
sparseMatrix(i = lower.summ$i,
j = lower.summ$j,
x = lower.summ$x,
dims = dim(myMatrix))
# 3 x 3 sparse Matrix of class "dgCMatrix"
#
# [1,] . . .
# [2,] 1 . .
# [3,] 2 . .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)