[R] Character string to R object

John C Nash nashjc at uottawa.ca
Sat Apr 28 16:42:19 CEST 2012


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<nashjc at 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"
>
>



More information about the R-help mailing list