如何做稀疏矩阵(dgCMatrix)操作以节省时间?

时间:2015-11-03 20:50:16

标签: r

我正在处理线性回归涉及一个大的稀疏矩阵。如果我直接用矩阵作为常规矩阵计算,处理时间会很长。我发现我可能需要先将矩阵转换为“dgCMatrix”,但我不知道如何使用这种“dgCMatrix”矩阵进行计算。

例如,

M<-matrix(c(0,0,0,1,0,0,0,1,1,1,0,0), nc=4) 
A<-c(1,2,3,4)
M<-as(M, "sparseMatrix")
str(M)
Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
  ..@ i       : int [1:4] 0 1 2 0
  ..@ p       : int [1:5] 0 0 1 3 4
  ..@ Dim     : int [1:2] 3 4
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ x       : num [1:4] 1 1 1 1
  ..@ factors : list()
px<-as.integer(x@p + 1)
ix<-as.integer(x@i + 1)
x<-as.double(x@x)

然后我不知道如何继续。如何使用dgCMatrix稀疏矩阵信息以更有效的方式使用这些信息来进行矩阵运算(例如,如下所示的乘法,加法,减法等)。

M%*%A
3 x 1 Matrix of class "dgeMatrix"
      [,1]
[1,]    6
[2,]    3
[3,]    3

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您的自变量矩阵是否稀疏?如果是这样,您可以使用MatrixModels包非常有效地执行线性回归:

MatrixModels:::lm.fit.sparse(M, A)

答案 1 :(得分:0)

dtm <-dtm [,colSums(dtm)> 15] 如果您有文档矩阵,则可以通过设置数量

来减少稀疏