On Thu, Mar 15, 2018 at 3:39 AM, <florianschwendin...@gmx.at> wrote: > Thank you for your answer! > I agree with you except for the 3 (Error) example and > I realize now I should have started with that in the explanation. > > From my point of view > parLapply(cl = clu, X = 1:2, fun = fun, c = 1) > shouldn't give an error. > > This could be easily avoided by using all the argument > names in the custerApply call of parLapply which means changing, > > parLapply <- function(cl = NULL, X, fun, ...) { > cl <- defaultCluster(cl) > do.call(c, clusterApply(cl, x = splitList(X, length(cl)), > fun = lapply, fun, ...), quote = TRUE) > } > > to > > parLapply <- function (cl = NULL, X, fun, ...) { > cl <- defaultCluster(cl) > do.call(c, clusterApply(cl = cl, x = splitList(X, length(cl)), > fun = lapply, fun, ...), quote = TRUE) > }
Oh... sorry I missed that point. Yes, I agree, this should be a trivial fix to the 'parallel' package. /Henrik > > . > > Best regards, > Florian > > > > Gesendet: Mittwoch, 14. März 2018 um 19:05 Uhr > Von: "Henrik Bengtsson" <henrik.bengts...@gmail.com> > An: "Florian Schwendinger" <florian_schwendin...@gmx.at> > Cc: fschw...@wu.ac.at, R-devel <r-devel@r-project.org> > Betreff: Re: [Rd] clusterApply arguments > This is nothing specific to parallel::clusterApply() per se. It is the > default behavior of R where it allows for partial argument names. I > don't think there's much that can be done here except always using > fully named arguments to the "apply" function itself as you show. > > You can "alert" yourself when there's a mistake by using: > > options(warnPartialMatchArgs = TRUE) > > e.g. > >> clusterApply(clu, x = 1:2, fun = fun, c = 1) ## Error > Warning in clusterApply(clu, x = 1:2, fun = fun, c = 1) : > partial argument match of 'c' to 'cl' > Error in checkCluster(cl) : not a valid cluster > > It's still only a warning, but an informative one. > > /Henrik > > On Wed, Mar 14, 2018 at 8:50 AM, Florian Schwendinger > <florian_schwendin...@gmx.at> wrote: >> Hi! >> >> I recognized that the argument matching of clusterApply (and therefore >> parLapply) goes wrong when one of the arguments of the function is called >> "c". In this case, the argument "c" is used as cluster and the functions >> give the following error message "Error in checkCluster(cl) : not a valid >> cluster". >> >> Of course, "c" is for many reasons an unfortunate argument name and this can >> be easily fixed by the user side. >> >> See below for a small example. >> >> library(parallel) >> >> clu <- makeCluster(2, "PSOCK") >> >> fun <- function(x0, x1) (x0 + x1) >> clusterApply(clu, x = 1:2, fun = fun, x1 = 1) ## OK >> parLapply(cl = clu, X = 1:2, fun = fun, x1 = 1) #OK >> >> >> fun <- function(b, c) (b + c) >> clusterApply(clu, x = 1:2, fun = fun, c = 1) ## Error >> clusterApply(cl = clu, x = 1:2, fun = fun, c = 1) ## OK >> parLapply(cl = clu, X = 1:2, fun = fun, c = 1) ## Error >> >> stopCluster(clu) >> >> >> I used "R version 3.4.3 Patched (2018-01-07 r74099". >> >> >> Best regards, >> Florian >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel[https://stat.ethz.ch/mailman/listinfo/r-devel] > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel