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