2012-09-11 115 views
1

我有一个非常大的(约91万次无零项)稀疏矩阵()中的R,看起来像:大型稀疏矩阵,以三角矩阵R

> myMatrix 
    a b c 
a . 1 2 
b 1 . . 
c 2 . . 

我想将它转化成一个三角矩阵(上或下),但是当我尝试myMatrix = myMatrix * lower.tri(myMatrix)时,对于lower.tri()存在'问题太大'的错误。想知道是否有人可能知道解决方案。谢谢你的帮助!

+0

使用更小的矩阵? –

回答

6

相反的基体本身,工作努力的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 . .