【问题标题】:Can I tell the R plyr package to work in parallel by default?我可以告诉 R plyr 包默认并行工作吗?
【发布时间】:2012-03-27 18:54:48
【问题描述】:

我正在做一些类似这样的分析:

library(plyr)
input.files <- c("file1.txt", "file2.txt", "file3.txt")
input.data <- llply(input.files, load.file, .parallel=TRUE)
step.one.results <- llply(input.data, step.one, .parallel=TRUE)
step.two.results <- llply(step.one.results, step.two, .parallel=TRUE)
...
step.N.results <- llply(`step.N-1.results`, step.N, .parallel=TRUE)
...

有什么方法可以让所有 plyr 函数默认并行,这样我就不必总是为每个步骤指定.parallel=TRUE

【问题讨论】:

  • 除了下面的解决方案之外,看起来diversitree 包中有一个名为set.defaults 的函数可以做到这一点。

标签: r parallel-processing default plyr


【解决方案1】:
library(Defaults)
setDefaults(llply, .parallel=TRUE)

您必须在要更改其默认形式的每个函数上setDefaults。如果你愿意,你可以把它放在你的 .Rprofile 中。

你也可以直接弄乱形式。例如 formals(llply)$.parallel &lt;- TRUE 应该可以工作。

【讨论】:

  • 仅供参考,CRAN 上似乎不再提供 Defaults 包,因此您必须直接弄乱形式。
【解决方案2】:

来自我对另一个question的回答:

由于 CRAN 不再提供 Defaults 包,您可以使用 default

举个例子:

x <- list(a = 1, b = 2, c = 3)
default::default(unlist) <- list(use.names = FALSE)
unlist(x)
#> [1] 1 2 3

unlist <- default::reset_default(unlist)
unlist(x)
#> a b c 
#> 1 2 3

reprex package (v0.2.0.9000) 于 2019 年 3 月 22 日创建。

【讨论】:

  • 感谢您的意见!不幸的是stack overflow's policy 是即使链接被删除,答案也应该提供解决方案。请相应地编辑您的问题,或使用评论代替。谢谢!
  • 谢谢!根据您的要求,我已经懒洋洋地从相关问题中复制了我的答案。对吗?
  • 是的!只要您的答案在没有链接的情况下也有意义,那就很好。
猜你喜欢
  • 1970-01-01
  • 2017-03-22
  • 2011-02-09
  • 2016-02-02
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2020-10-20
  • 2020-11-30
相关资源
最近更新 更多