On 8/23/05, Martin Maechler <[EMAIL PROTECTED]> wrote:
> >>>>> "Gabor" == Gabor Grothendieck <[EMAIL PROTECTED]>
> >>>>>     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

Reply via email to