2012-09-11 148 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 . .