融化稀疏矩阵dgCMatrix并保持其零

问题描述

我有一个大的sparse matrixMatrix中的一个dgCMatrixR对象)。

玩具示例:

m <- Matrix(c(0,2:0),3,5)
rownames(m) <- paste0("g",1:3)
colnames(m) <- paste0("c",1:3)
> m
3 x 5 sparse Matrix of class "dgCMatrix"
   c1 c2 c3 c4 c5
g1  .  1  .  .  2
g2  .  .  2  .  1
g3  2  .  1  .  .

我想meltdata.frame

reshape2的{​​{1}}需要将此melt强制转换为dgCMatrix对象,并且对于我正在使用的尺寸,它非常慢。所以我正在寻找更有效的方法

我以为matrix的{​​{1}}可以解决问题,但是它会删除零值:

mefa4

我想保留它们,但在Melt的手册中看不到提供该参数的参数。有其他选择的想法吗?

解决方法

数据:

m <- Matrix(c(0,2:0),3,5)
rownames(m) <- paste0("g",1:3)
colnames(m) <- paste0("c",1:5)

解决方案:

data.frame(rows=rownames(x)[row(x)],cols=colnames(x)[col(x)],value=as.numeric(x))

这似乎比强制reshape2melt的{​​{1}}的{​​{1}}的{​​{1}}要快:

matrix