[R-pkg-devel] Effieciency drop in do.call?
peter dalgaard
pd@lgd @ending from gm@il@com
Mon Nov 19 23:59:12 CET 2018
A classical way of encountering this is
x <- rnorm(1000)
do.call("plot", list(x))
A way out is
do.call("plot", list(quote(x)))
-pd
> On 19 Nov 2018, at 22:32 , peter dalgaard <pdalgd using gmail.com> wrote:
>
> If it was just about args evaluation, then the slowness would be in the list() call, no?
> An accidental deparse of a large structure could well be the culprit.
>
> -pd
>
>
>> On 19 Nov 2018, at 18:53 , Gabor Grothendieck <ggrothendieck using gmail.com> wrote:
>>
>> The do.call version evaluates all arguments while the normal version
>> may not depending on the function. There could also be a difference
>> if the function uses non-standard evaluation since in that case the
>> two could be passing different different argument values.
>>
>> For an example of the second case,
>>
>> f <- function(x) deparse(substitute(x))
>>
>> f(pi)
>> ## [1] "pi"
>>
>> do.call("f", list(pi))
>> ## [1] "3.14159265358979"
>>
>> On Mon, Nov 19, 2018 at 11:50 AM Paul Buerkner <paul.buerkner using gmail.com> wrote:
>>>
>>> Hi all,
>>>
>>> today, I stumbled upon a puzzling (to me) problem apparently related to
>>> do.call() that resulted
>>> in an efficiency drop of multiple orders of magnitudes compared to just
>>> calling the function directly (multiple minutes as compared to one second).
>>>
>>> That is
>>>
>>> fun(a = a, b = b, c = c, ...)
>>>
>>> took one second, while
>>>
>>> args <- list(a = a, b = b, c = c, ...)
>>> do.call(fun, args)
>>>
>>> took multiple minutes.
>>>
>>> In my package (brms), I use do.call in various places but only in one it
>>> resulted in this
>>> efficiency drop.
>>>
>>> Before I try to make a reproducible example, I wanted to ask if there are
>>> any known issues
>>> with do.call that may explain this?
>>>
>>> Paul
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-package-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>
>>
>>
>> --
>> Statistics & Software Consulting
>> GKX Group, GKX Associates Inc.
>> tel: 1-877-GKX-GROUP
>> email: ggrothendieck at gmail.com
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
> --
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Office: A 4.23
> Email: pd.mes using cbs.dk Priv: PDalgd using gmail.com
>
>
>
>
>
>
>
>
>
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk Priv: PDalgd using gmail.com
More information about the R-package-devel
mailing list