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