1
想象一下你有一個150×5的矩陣。每個元素包含一個從0到20的隨機整數。讓我的R代碼運行得更快(嵌套循環)
現在認爲矩陣的每一列都是獨立的;我需要遍歷所有5列的所有可能的組合,這產生了150^5 = 75937500000個組合。
重要的是我只運行一次每一個組合。我運行組合的順序並不重要。
我試着用while循環做這個。見下面的代碼。
要運行此循環,根據我的計算,我的筆記本電腦需要54小時。
問題
什麼辦法能讓我的代碼運行速度更快我的筆記本電腦? (bootstrapping?)
如果沒有,是否有任何可以訪問的Web R服務器,以顯着更快的速度運行我的代碼?
如果不是,它會使其他語言運行速度有什麼不同嗎? (Python)的
while(counter1 <= 150) { while(counter2 <= 150) { while(counter3 <= 150) { while(counter4 <= 150) { while(counter5 <= 150) { #Other operations that take additional time# result<-c( giant_matrix[counter1,1], giant_matrix[counter2,2], giant_matrix[counter3,3], giant_matrix[counter4,4], giant_matrix[counter5,5]) counter5=counter5+1 } counter5=1 counter4=counter4+1 } counter4=1 counter3=counter3+1 } counter3=1 counter2=counter2+1 } counter2=1 counter1=counter1+1 }
可以嘗試'expand.grid(M [1],米[,2],m [,3],m [,4],m [,5])'其中m是所討論的矩陣。你的機器是否有適合這個大對象的內存? – Gopala
您是否真的需要將所有組合同時存儲在內存中?這將需要'(75,937,500,000組合)*(5 int /組合)*(4字節/ int)= 1,518,750,000,000字節= 1.51875 TB的內存。我不知道任何帶有那麼多RAM的筆記本電腦。 – bgoldst
你真的需要運行150行的所有組合嗎?正如你所提到的,矩陣內的數字是從0到20,所以會有21^5個獨特的數據組合。例如,如果矩陣以行'[1] 10 11 5 17 3'和'[2] 1 7 14 20 3'索引組合'c(1,1,1,1,1)'和'c(1 ,1,1,1,2)'將給出相同的結果載體 – inscaven