[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