是否有R包看到稀疏矩阵(即许多零条目),例如4乘4矩阵:
Q <- matrix(c(1,-1,0,0, -1,2,-1,0, 0,-1,2,-1, 0,0,-1,1), nrow=4); print(Q)
并将其存储(并操作)为4乘2矩阵:
Q.band <- matrix(c(1,2,2,1, -1,-1,-1,0), nrow=4); print(Q.band)
由于不需要零条目,并且由于对称性,我们不需要将非零非对角线条目存储两次。
我调查了R套餐矩阵和垃圾邮件。它们很有用但并没有完全如上所述。
答案 0 :(得分:1)
您可以使用dsCMatrix
包中的Matrix
:
dsCMatrix类是一类对称的稀疏数值矩阵 采用压缩的,面向列的格式。
所以在你的情况下:
library(Matrix)
as(Q, "dsCMatrix")
这将只存储7个元素
length(as(Q, "dsCMatrix")@x)
[1] 7
要获取矩阵Q.band
,您可以执行以下操作。
matrix(c(as(Q, "dsCMatrix")@x,0),ncol=2,byrow=TRUE)
[,1] [,2]
[1,] 1 -1
[2,] 2 -1
[3,] 2 -1
[4,] 1 0