Re: [Rd] do.call(): no need for quote {was .. Questions about calls..}

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue 23 Aug 2005 - 11:16:02 GMT

On 8/23/05, Martin Maechler <maechler@stat.math.ethz.ch> wrote:
> >>>>> "Gabor" == Gabor Grothendieck <ggrothendieck@gmail.com>
> >>>>> on Mon, 22 Aug 2005 18:55:38 -0400 writes:
>
> ..................
>
> Gabor> Try do.call like this:
>
> Gabor> ff <- x ~ g*h
> Gabor> do.call("substitute", list(ff, list(x = as.name("weight"))))
>
> Just a small remark: For all those who -- like me -- have found
> it ``unpleasant'' to have to quote the first argument of do.call():
> You don't have to any longer since the NEWS of R 2.1.0 contains
>
> o do.call() now takes either a function or a character string as
> its first argument. The supplied arguments can optionally be
> quoted.
>
> So the above could be
>
> do.call(substitute, list(ff, list(x = as.name("weight"))))

I have used that form but went back to the character form when I noticed the entire text of the function appearing in tracebacks, which I found to be a nuisance, particularly for functions with large bodies:

> f <- function(x) { stop() }
> do.call(f, list(3))

Error in function (x) :
> traceback()

3: stop()
2: function (x)

   {

       stop()
   }(3)
1: do.call(f, list(3))

Of course, in the case of substitute the body is only one line.



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Aug 23 21:23:11 2005

This archive was generated by hypermail 2.1.8 : Mon 24 Oct 2005 - 22:27:43 GMT