Javier PB wrote: > > I got really stuck trying to apply a function to a piece of code > that I created using different string functions. > > To make things really easy, this is a wee example: > > x<-c(1:10) > script<-"x, trim = 0, na.rm = FALSE" ##script created by a > number of paste() and rep() steps mean(script) > ##function that I want to apply: doesn't work > > Is there any way to convert the "script" class so that the function > mean() can read it as if it were text typed in the console? > That's a really tricky question.
I think that there are two solutions, both of them pass through an alternate way of calling functions. Namely: for each function that can be called as f(x=a, y=b, z=c), you can use do.call(f, list(x=a,y=b,z=c)) or even do.call(f, list(a, b, c)). Let's test this. f <- function(x, y) x + 2 * y f(1, 2) do.call(f, list(1, 2)) So far so good. The problem now is that you don't have a list(x, trim = 0, na.rm = FALSE), but a string! But it's a piece of cake to convert a string to an R object (but only after you know the magic words, and they are eval(parse(text=string))): eval(parse(text = paste("list(", script, ")", sep = "")) So, a slow and didatical(sp?) solution to your problem is: x<-c(1:10) script<-"x, trim = 0, na.rm = FALSE" # Step 1: convert script to a list - but still as a string script.list.string <- paste("list(", script, ")", sep = "") # Step 2: convert script to a list script.list <- eval(parse(text = script.list.string)) # Step 3: call the function do.call(mean, script.list) The second way (and simpler) is to enclose the "mean" function into the script string, and then invoke the magic words: x<-c(1:10) script<-"x, trim = 0, na.rm = FALSE" # Step 1: convert script to the calling of mean - but still as a string mean.string <- paste("mean(", script, ")", sep = "") # Step 2: compute it eval(parse(text = mean.string)) Alberto Monteiro ______________________________________________ R-help@r-project.org 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.