在 R 中并行运行函数

Posted

技术标签:

【中文标题】在 R 中并行运行函数【英文标题】:Running functions in parallel in R 【发布时间】:2015-07-23 16:55:36 【问题描述】:

我有两个函数fun1fun2。我想在我的 R 脚本中并行运行它们。当他们完成后,我想按顺序使用他们的输出进行进一步处理。我想这意味着我需要等待他们完成。

我非常感谢任何提示或指示。

谢谢。

【问题讨论】:

请提供示例代码和数据,否则我们无能为力。具体请看***.com/questions/5963269/… 看看cran.r-project.org/web/packages/doParallel/vignettes/… 【参考方案1】:

R 的并行程序包大多设计用于以可能不同的数据并行运行相同的函数或表达式。它们并非开箱即用地设计为以简单的方式运行不同的功能。

最好有一个像 DAGapply 这样的函数,你可以指定一个有向无环图(哪些部分取决于其他部分)并且所有可以并行运行的部分将是,然后作为初始部分返回,然后将提交其依赖项已全部完成的部分以并行运行,但我还没有在任何地方看到该功能。有想过自己写,可以看到要调用的主要部分(但它们是非导出的,随时可能更改),但还没有找到时间。

您现在可以使用的一种解决方法是编写您自己的函数,该函数采用单个参数,如果该参数为 1,则它调用您的第一个函数,如果 2 中的参数调用您的第二个函数。然后可以将这个新函数传递给并行函数(例如并行包中的 parLapply),然后并行运行您的函数并等待两者完成。

【讨论】:

谢谢!这正是我想要的! 感谢 Greg 的提示!这就是我想出的:code res

以上是关于在 R 中并行运行函数的主要内容,如果未能解决你的问题,请参考以下文章

在并行模式下运行具有多个参数的R函数

在 R foreach() 下并行运行时无法识别动态库依赖项

使用不同的参数并行运行相同的函数,并知道哪个并行运行在 python 中结束了

使用 foreach 进行并行处理时出错:“找不到函数“%dopar%””

如何在并行 Scala 中运行不同的函数

如何并行化 R 中包的函数