Re: [Rd] turning expression object to function

From: Marc Schwartz <marc_schwartz_at_comcast.net>
Date: Mon 18 Dec 2006 - 20:24:39 GMT

On Mon, 2006-12-18 at 19:06 +0100, Antonio, Fabio Di Narzo 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.

Let me offer some pointers and a couple of possible examples:

?call
?as.function
?alist
?eval
?parse


expr <- expression(a + b + c)

> as.function(alist(a = , b = 1, c = 2, eval(expr)))(5)
[1] 8

> as.function(alist(a = , b = 1, c = 2, eval(expr)))(5, 10, 8)
[1] 23

MyExpr <- paste(letters[1:3], collapse = " + ")

> MyExpr

[1] "a + b + c"

> as.function(alist(a = , b = 1, c = 2, eval(parse(text = MyExpr))))(6)
[1] 9

HTH, Marc Schwartz



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Dec 19 07:27:37 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Mon 18 Dec 2006 - 21:30:56 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.