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