R 高效带矩阵存储

R 高效带矩阵存储,r,dataset,matrix,sparse-matrix,package,R,Dataset,Matrix,Sparse Matrix,Package,是否有一个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) Q您可以使用Matrix软件包中的dsCMatrix: dsCMatrix类是一类对称、稀疏的数值矩阵 以压缩的、面向列的格式 因此,在你的情况下: library(Matrix) as(Q, "dsCMatrix") 这将只存储7个元素 length(as(Q, "d

是否有一个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)

Q您可以使用
Matrix
软件包中的
dsCMatrix

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

您可以使用
Matrix
软件包中的
dsCMatrix

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