在我的机器,有没有办法在R中创建使用比标准矩阵少的内存的矩阵?
m1 = (runif(5*10^7), ncol=10000, nrow=5000)
使用了大约380 MB。我需要在内存中同时处理许多这样的矩阵(例如,在它们上面添加或乘上它们或者对其进行函数处理)。总而言之,由于存储在内存中的多个矩阵,我的代码使用了4 GB的RAM。我正在考虑更有效地存储数据的选项(即以一种占用更少RAM的方式)。
我看过R
packagebigmemory
被推荐。但是:
library(bigmemory)
m2 = big.matrix(init = 0, ncol=10000, nrow=5000)
m2[1:5000,1:10000] <- runif(5*10^7)
使R在内存中的使用量与我使用Windows任务管理器进行验证时的内存量相同。所以我预计没有大的收益,或者我错了,我应该以不同的方式使用big.matrix
?
不知道它是否会满足您的需求,但包e1071具有稀疏矩阵功能 – Jake
在你的第二个代码块,'runif(5 * 10^7)'是什么吞噬了你的记忆,因此将其分配给big.matrix将无济于事。想想你想如何初始化你的矩阵。 –
@洪Ooi目前尚不清楚OP是否使用它来初始化矩阵。他们可能只是将其用作他们正在使用的数据类型的一个例子。如果这确实具有代表性,则稀疏矩阵并不合适。 OP要么必须处理大量正在使用的内存,要么重写代码以使用硬盘。 – Acccumulation