关于foreach函数,R中的doParalleldoMC有什么区别?doParallel支持windows和类unix,而doMC只支持类unix.换句话说,为什么doParallel不能直接取代doMC?非常感谢.

更新:

参考:http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf

顺便问一下,registerDoParallel(ncores=3)registerDoParallel(ncores=3)之间有什么区别

cl <- makeCluster(3)
registerDoParallel(cl)

似乎registerDoParallel(ncores=3)可以自动停止集群,而第二个不会自动停止,需要stopCluster(cl).

参考:http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf

推荐答案

doParallel方案是doSNOWdoMC的合并,正如parallel方案是snowmulticore的合并.尽管doParallel具有doMC的所有功能,但Rich Calaway of Revolution Analytics告诉我,他们希望保留doMC,因为它在某些情况下更有效,尽管doMC现在使用parallel就像doParallel一样.我个人没有运行任何基准来确定是否存在显著差异,以及何时存在显著差异.

我倾向于在Linux或Mac OS X计算机上使用doMC,在Windows计算机上使用doParallel,在Linux集群上使用doMPI,但doParallel确实适用于所有这些平台.


对于不同的注册方法,如果执行:

registerDoParallel(cores=3)

在Windows机器上,它会隐式创建一个cluster对象,以便以后与clusterApplyLB一起使用,而在Linux和Mac OS X上,不会创建或使用任何cluster对象.内核的数量被简单地记住,并在稍后调用mclapply时用作mc.cores参数的值.

如果执行:

cl <- makeCluster(3)
registerDoParallel(cl)

然后,无论平台如何,注册的集群对象都将与clusterApplyLB一起使用.在这种情况下,您的责任是在创建集群对象后关闭它,而隐式集群对象是自动关闭的,这是正确的.

R相关问答推荐

R中的滞后累积量

按条件计算观察次数

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

通过使用str_detect对具有相似字符串的组进行分组

使用gcuminc,如何使用逗号格式化风险表?

然后根据不同的列值有条件地执行函数

我不能在docker中加载sf

如何使用列表中多个列表中的第一条记录创建数据框

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

为左表中的所有行使用值Fill滚动左连接

如何将一列中的值拆分到R中各自的列中

使用geom_iles在一个切片中包含多个值

通过初始的shiny 应用更新部署的shiny 应用的数据和参数,其中部署的应用程序显示为URL

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

在不对R中的变量分组的情况下取两行的平均值

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

如何在R中创建条形图,使条形图在y轴上围绕0.5而不是0构建条形图?

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件