我有以下回圈不斷生成 3 個亂數,直到這 3 個亂數總和正好為 10。然后,它將重復此程序 100 次。這是此的代碼:
for (i in 1:100){
num_1_i = num_2_i = num_3_i = 0
while(num_1_i num_2_i num_3_i != 10){
num_1_i = runif(1,0,5)
num_2_i = runif(1,0,5)
num_3_i = runif(1,0,5)
}
inter_results_i <- data.frame(i, num_1_i, num_2_i, num_3_i)
list_results[[i]] <- inter_results_i
}
我知道這個 WHILE 回圈將需要很長時間才能運行,因為 WHILE 條件非常“嚴格”(即很難想出 3 個總和為特定數字的亂數)。假設我要運行這個 WHILE LOOP 幾個小時并注意到代碼仍在運行 - 如果我要“中斷”計算機(例如單擊 R 中的“中斷按鈕”,即角落中的紅色停止標志),我可能會失去我所做的所有“進步”(例如,假設計算機生成了 5 個三元組的數字,總和為 10)。
我的問題:這個 while 回圈能否以這樣的方式進行更改,以便在中斷時將“中間進度”保存在“list_results”物件中?我有興趣學習如何修改 WHILE LOOP 的通用代碼,以便在中斷時保存中間進度。
注意:我很想看一個如何撰寫能夠存盤中間結果的 WHILE LOOP的示例。
uj5u.com熱心網友回復:
如果您嘗試以下代碼,只需將回圈list_results
之前定義為空串列for
list_results <- list()
for (i in 1:1000){
num_1_i = num_2_i = num_3_i = 0
while(num_1_i num_2_i num_3_i != 150){
num_1_i = sample(1:100 , 1)
num_2_i = sample(1:100 , 1)
num_3_i = sample(1:100 , 1)
}
inter_results_i <- data.frame(i, num_1_i, num_2_i, num_3_i)
list_results[[i]] <- inter_results_i
}
并快速中斷該程序,您會發現一些值,list_results
但不是 1000 個值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498171.html
上一篇:保留只出現一次的向量元素或矩陣列