我能否让R plyr包默认并行工作?

6
我正在进行类似以下内容的分析:

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的函数可以实现这个功能。 - Jake Fisher
2个回答

10
library(Defaults)
setDefaults(llply, .parallel=TRUE)

如果您想更改默认参数,需要对每个函数都进行setDefaults设置。如果您希望可以将其放入.Rprofile中。

您也可以直接更改参数。例如:formals(llply)$.parallel <- TRUE 可以起作用。


1
只是提供信息,看起来Defaults包在CRAN上不再可用,所以您必须直接处理formals。 - Jake Fisher

1

以下是我对另一个问题的回答:

由于Defaults包已不再在CRAN上提供,您可以使用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包(v0.2.0.9000)于2019年3月22日创建的。


感谢您的回答!不幸的是,stack overflow的政策是即使链接被删除,答案也应该提供解决方案。请相应地编辑您的问题,或使用评论代替。谢谢! - Nino Filiu
谢谢!根据您的要求,我已经懒惰地从相关问题中复制了我的答案。这样正确吗? - Alain Danet
没问题!只要你的回答即使没有链接也能让人理解,就可以。 - Nino Filiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接