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