R与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结果根据迭代vairable的顺序排序(此处i)。如果FALSE结果不排序。这会对计算时间产生积极影响。
.packages针对由任何包中提供的功能之外base,例如像mass,randomForest否则,您必须提供这些软件包与c("mass", "randomForest")