與 foreach 包並行處理

foreach 軟體包為 R 提供了並行處理的強大功能。但在你想要使用多核 CPU 之前,你必須分配多核叢集。doSNOW 包是一種可能性。

foreach 迴圈的簡單用法是計算 1 到 100000 之間所有數字的平方根和平方的總和。

library(foreach)
library(doSNOW)

cl <- makeCluster(5, type = "SOCK")
registerDoSNOW(cl)

f <- foreach(i = 1:100000, .combine = c, .inorder = F) %dopar% {
    k <- i ** 2 + sqrt(i)
    k
} 

foreach 的輸出結構由 .combine 引數控制。預設輸出結構是一個列表。在上面的程式碼中,c 用於返回向量。注意,諸如 + 的計算函式(或運算子)也可用於執行計算並返回進一步處理的物件。

值得一提的是,每個 foreach 迴圈的結果都是最後一次呼叫。因此,在這個例子中,k 將被新增到結果中。

引數 細節
。結合 結合功能。確定如何組合迴圈的結果。可能的值是 ccbindrbind+* ……
。為了 如果 TRUE 結果是按照迭代的順序排序(這裡是 i)。如果 FALSE 結果沒有訂購。這會對計算時間產生積極影響。
.packages 對於除 base 之外的任何包裝提供的功能,例如 massrandomForest 或者其他,你必須提供這些包裝 c("mass", "randomForest")