[R] turning R expressions into functions?

Jochen Voß voss at seehuhn.de
Mon Jul 2 15:50:47 CEST 2012


Dear Thomas,

Many thanks for your answer.

On Sat, Jun 30, 2012 at 10:22:52AM +0900, Thomas Lumley wrote:
> > 1) good: If I run the following using "Rscript"
> >
> >  test1 <- function(e1) {
> >   e1 <- substitute(e1)
> >   FuncIt(100, e1)
> >  }
> >
> >  f <- test1(rnorm(1))
> >  print(f)
> >
> > then I get the following output:
> >
> >  function ()
> >  {
> >     for (funcit.i in 1:100) {
> >         rnorm(1)
> >     }
> >  }
> >  <environment: 0x102260c28>
> >
> > This is what I want.  But why do I need the extra "substitute"
> > in test1?  I only found by experiment that this is needed.
> 
> You don't.  You need an extra quote() in the argument.
> [...]
> You can get around this using substitute(), which extracts the
> unevaluated code from the formal argument, but it's probably a bad
> idea, since the user of the function should expect all the arguments
> to be evaluated.

I want my final function to work like system.time, i.e.
the user should not have to type "quote()" all the time
when calling the top-level function of my measuring
mechanism.

Is there a way to do the quoting inside the top-level function
call?

Many thanks,
Jochen Voss
-- 
http://seehuhn.de/



More information about the R-help mailing list