Thanks Gabor and Ista,
I should have realized I could tweak parse(), since I've been using it elsewhere. Somehow
focused only on documentation of source().
JN
On 04/28/2012 10:36 AM, Gabor Grothendieck wrote:
On Sat, Apr 28, 2012 at 10:27 AM, John C Nash<nas...@uottawa.ca> wrote:
I've been creating some R tools that manipulate objective functions for
optimization. In so doing, I create a character string with R code, and then
want to have it in my workspace. Currently -- and this works fine -- I write
the code out, then use source() to bring it in again. Example:
cstr<-"jack<-function(x){\n cat(\"Silly x:\")\n print(x) \n }\n"
write(cstr, file='tfile.txt')
jack<-source('tfile.txt')$value # You need the value element!
print(jack)
However, I feel it would be more elegant if I could avoid the file, and am
sure I must have missed some way to pipe the cstr through the source()
function. Also, if the file cannot be written (directory permissions?), then
my approach won't work.
Try this:
cstr<-"jack<-function(x){\n cat(\"Silly x:\")\n print(x) \n }\n"
eval(parse(text = cstr))
jack(0)
Silly x:[1] 0
This also works:
f<- function(x) {}
body(f)<- parse(text = '{\n cat("Silly x:")\n print(x) \n }\n')
f("X")
Silly x:[1] "X"
______________________________________________
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.