【发布时间】:2017-06-23 15:56:16
【问题描述】:
我有一个矩阵 M1(3644069845 个元素,27.2 Gb)
dim(M1)
[1] 5785 629917
在此矩阵上涉及解析元素的任何操作都以错误告终 很少,例如:
SM1<-as(M1,"dgCMatrix")
Error in .Call(dense_to_Csparse, from) :
negative length vectors are not allowed
请注意,我的系统有 240 GB 内存( ubuntu16 , r4.8xlarge ),我一直在监控它以查看内存是否耗尽,但似乎内存仍然很好。 如果我可以将它变成一个稀疏矩阵,那么我可以将大小减小到 3 Gb,因为大多数元素都是零(95% 是零)。
任何使它成为稀疏矩阵的建议都会有所帮助。
以下帖子的建议 R - data frame - convert to sparse matrix
sparsify ,不起作用。 4 小时后,我停止了执行。
【问题讨论】:
-
如何创建这个矩阵?
-
通过将 DAT 文件加载到 data.frame 中,然后转换为矩阵
-
我会解析文件并从头开始创建一个稀疏矩阵。但是,您可能应该使用 R 以外的工具来提高效率。
-
是关于向量长度限制(
.Machine$integer.max, 2^31)?矩阵在内部存储为向量。dense_to_Csparse(可能在 C 中)是否有可能不允许超过 2^31 的任何内容?
标签: r memory sparse-matrix