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

Reply via email to