Can I tell the R plyr package to work in parallel by default?
Asked Answered
W

2

6

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?

Wham answered 27/3, 2012 at 18:54 Comment(1)
In addition to the solution below, it looks like there's a function called set.defaults in the diversitree package that can do this.Bagdad
S
10
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.

Stralsund answered 27/3, 2012 at 19:0 Comment(1)
Just FYI, it looks like the Defaults package is no longer available on CRAN, so you'll have to mess with the formals directly.Bagdad
V
1

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

Varied answered 22/3, 2019 at 15:13 Comment(3)
Thanks for your input! Unfortunately stack overflow's policy is that answers should provide a solution even if the link gets removed. Please edit your question accordingly, or use a comment instead. Thanks!Inkling
Thank you! According to your request, I have lazily copied my answer from the related question. Is it correct ?Varied
Yup! As long as your answer makes sense even without the link, it's all good.Inkling

© 2022 - 2024 — McMap. All rights reserved.