【问题标题】:Do the R parallel extensions break the `apply` metaphor?R 并行扩展是否破坏了“应用”隐喻?
【发布时间】:2011-10-15 21:03:38
【问题描述】:

每次我在 R 中看到有关并行处理的问题时,它都会使用 foreach 函数。既然for 循环不是很像R,那么有没有apply 的并行版本,如果有,为什么它不更受欢迎?

【问题讨论】:

  • 就我而言,foreach 的吸引力在于它允许我将多个变量传递到函数中,选择如何组合结果,并且比 apply 等效项更具可读性。我不知道他们在速度方面的比较。
  • @Backlin:但是对于forapply(非并行版本),人们可能会提出同样的批评,并且人们为 apply 家族争论不休。它既是一种风格,又是一种速度……

标签: r parallel-processing apply


【解决方案1】:

@Dirk 是正确的。我要补充一点,plyr 包现在支持并行后端。

plyr 包的情况下,可能很少提及,因为放入并行后端不需要任何考虑:它只是一个标志。

【讨论】:

  • 我认为你可能是对的,它没有得到任何提及,因为它确实有效。为什么它与 apply 的工作方式不同?最终这似乎是一个正确的比喻:让库处理并行化,而用户所要做的就是决定他们是否希望它并行运行......
  • 务实地说,其中一些功能是相当新的,人们才刚刚开始采用它。
  • 是的,但 foreach 似乎是其中最新的一个,而且它是最受关注的一个......
【解决方案2】:

*apply 有许多并行版本,以

开头
  • parLapply()在雪地里
  • mclapply() 在多核中
  • mpi.apply() 在 Rmpi​​ 中

以及诸如 papply 之类的专用软件包(可能不再维护)。

【讨论】:

  • 它们是不是很容易使用以至于没有人问任何关于它们的问题? :-) 也许只是最近几周,但已经有很多 foreach 问题,但没有关于这些问题。在 SO 上搜索这三个只会产生 mclapply() 的结果,然后不会那么多。
  • 您可以从调查报告开始,例如this one in JSS
  • 它也是从CRAN Task View on High-Performance Computing with R 中引用的,我想你已经看到了?
  • 我看过任务视图,我想我之前可能看过论文但没有完全欣赏它。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多