我想要使用foreach
將for循環轉換爲循環。如何輸出使用foreach迭代填充的兩個向量?
我已經嘗試了幾個輸出方法玩.combine
參數,但我不能輸出我創建的兩個向量,方法是首先初始化它們以保存1e4零,然後在每次迭代中重新填充每個條目。
特別是,我無法恢復以這種方式創建的載體:
Va = numeric(1e4)
Vb = numeric(1e4)
result = foreach(j = 1:1e4, .multicombine=TRUE) %dopar%
{
... rest of the code ...
Va[j] = sample(4,1)
Vb[j] = sample(5,1)
list(retSLSP, retBH)
}
注意,j是在foreach
循環的循環變量。還要注意,我所展示的計算不是我在代碼中的實際計算,而是與本例相同。
這不是foreach循環的工作方式。他們遵循功能性編程範例,只要他們不允許副作用。它們實際上比sapply更類似於for循環。總之,你不能用一個foreach循環來填充一個向量(好吧,有一種方法,但這是一種糟糕的做法,並且不如for循環)。 – Roland
謝謝,我懷疑這不僅困難,而且可能(接近)不可能做到。我使用foreach循環而不是for循環獲得的計算速度是顯而易見的,但並不重要。但是,也許我可以避免這種填充矢量的方法。有沒有辦法讓foreach函數知道我希望在每次迭代中保存這兩個值(根本不創建Va和Vb向量)? –
您可以返回c(a,b)並使用.combine = rbind來獲取矩陣。然後只需索引兩列來檢索兩個向量。 – thc