[Rd] turning expression object to function
Tony Plate
tplate at acm.org
Mon Dec 18 19:17:25 CET 2006
This is what I tried, and it seemed to work, but maybe others can give
better ideas, and also explain why the first attempt to assign the
formal arguments didn't work (but the second did.)
> f <- function() NULL
> formals(f) <- list(b=1, c=2)
> f
function (b = 1)
2
> formals(f) <- list(b=1, c=2)
> f
function (b = 1, c = 2)
2
> body(f)
[1] 2
> body(f) <- expression(a+b+c)
> f
function (b = 1, c = 2)
a + b + c
> a <- 3
> f()
[1] 6
>
One thing you may want to be careful of is the environment of the function.
(If I don't start out with f having a NULL body, the first attempt to
assign the formals works.)
-- Tony Plate
> sessionInfo()
R version 2.4.0 (2006-10-03)
i386-pc-mingw32
locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
States.1252;LC_MONETARY=English_United
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
attached base packages:
[1] "methods" "stats" "graphics" "grDevices" "utils" "datasets"
[7] "base"
other attached packages:
MASS foreign
"7.2-29" "0.8-17"
>
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.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list