與 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") |