Can I tell the R plyr package to work in parallel

2019-04-29 10:05发布

I'm doing some analysis something like this:

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)
...

Is there any way to make all the plyr functions parallel by default, so I don't always have to specify .parallel=TRUE for each step?

2条回答
来,给爷笑一个
2楼-- · 2019-04-29 10:43
library(Defaults)
setDefaults(llply, .parallel=TRUE)

You'd have to setDefaults on every function for which you want to change the default formals. You can put this in your .Rprofile if you like.

You can also mess with the formals directly. e.g. formals(llply)$.parallel <- TRUE should work.

查看更多
聊天终结者
3楼-- · 2019-04-29 10:50

From my answer to another question:

As the Defaults package is no longer available from CRAN, you can use default.

As an example:

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

Created on 2019-03-22 by the reprex package (v0.2.0.9000).

查看更多
登录 后发表回答