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.buerk...@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@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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel