[Rd] turning expression object to function

Antonio, Fabio Di Narzo antonio.fabio at gmail.com
Tue Dec 19 11:16:44 CET 2006


Tnx all for the interesting (and all working) suggestions!

Best regards,
Antonio.

2006/12/19, Gabor Grothendieck <ggrothendieck at gmail.com>:
> Here is one possibility.  It does not use the second argument in your function
> call but instead assumes the arguments of the output function are
> those variables
> in the expression that have not been assigned in the list L in the
> order encountered.
>
> library(gsubfn)
> asFun <- function(e, L = NULL, env = parent.frame()) {
>   fo <- ~ x
>   fo[[2]] <- e[[1]]
>   fun <- fn$force(as.formula(do.call(substitute, list(fo, L))))
>   environment(fun) <- env
>   fun
> }
>
> asFun(expression(a+b+c), list(b = 1, c = 2)) # function (a) a + 1 + 2
>
>
>
>
> On 12/18/06, Antonio, Fabio Di Narzo <antonio.fabio at gmail.com> wrote:
> > Dear all,
> > I have the following problem.
> >
> > Given an expression object 'expr' containing a certain set of symbols
> > (say 'a', 'b', 'c'), I would like to translate the expression object
> > in an R function of, say, 'a', programmatically. Here an example of
> > what I mean.
> >
> > Given:
> > > expr <- expression(a+b+c)
> >
> > a call like:
> > > asFunctionOf(expr, 'a', list(b=1, c=2))
> >
> > should return a function (not necessarly formally) equivalent to
> > > function(a) a+1+2
> >
> > Some suggestions?
> >
> > Best regards,
> > Antonio.
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>



More information about the R-devel mailing list