在我的機器,有沒有辦法在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