[R] from character string to function body?
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Sat Jul 7 18:02:29 CEST 2007
Atte Tenkanen said the following on 7/7/2007 8:41 AM:
> Dear R users,
>
> I wonder if it is possible to form a function from a character string. Here is an example:
>
>
>> x=3
>> `-`(`+`(`^`(x,3),`^`(x,2)),1) # Here is my function evaluated.
> [1] 35
>
>> V=list("`-`","(","`+`","(","`^`","(","x",",",3,")",",","`^`","(","x",",",2,")",")",",",1,")") # Here I construct the string, it could be vector as well?
>>
>> S=noquote(paste(V,collapse=""))
>>
>> S
> [1] `-`(`+`(`^`(x,3),`^`(x,2)),1) # Here is the same as a character string.
>
> Now I'd like to create a function using this string, something like this, but of course, this doesn't work:
>
> S=as.expression(S)
>
> F1<-function(x){S}
>
> Is there some way to do this?
>
> Cheers,
>
> Atte Tenkanen
> University of Turku, Finland
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
How about:
V <-
list("`-`","(","`+`","(","`^`","(","x",",",3,")",",","`^`","(","x",",",2,")",")",",",1,")")
# Here I construct the string, it could be vector as well?
S <- paste(V, collapse = "")
F1 <- function(x) {}
body(F1) <- parse(text = S)
F1(3)
# [1] 35
F1(2)
# [1] 11
HTH,
--sundar
More information about the R-help
mailing list