[R] why does this simple example NOT work?

Berend Hasselman bhh at xs4all.nl
Fri Jul 20 17:17:53 CEST 2012


Duncan Murdoch-2 wrote
> 
> On 12-07-20 2:50 AM, Martin Ivanov wrote:
>>   Hello,
>>
>> I want to create and save objects in a loop, but this is precluded by the
>> following obstacle:
>> this part of the script fails to work:
>>
>> assign(x=paste("a", 1, sep=""), value=1);
>> save(paste("a", 1, sep=""), file=paste(paste("a", 1, sep=""), ".RData",
>> sep=""))
> 
> paste("a", 1, sep="") is equivalent to "a1".  So you are saving the 
> string "a1" to the file "a1.RData".  You presumably want to save the 
> value of the variable a1, not that string.  (Though you didn't say that. 
>   It's helpful to describe what you don't like, don't just say it "fails 
> to work".)
> 
> If you have the name of a variable in a string, you can use get() to get 
> the value.  So I think this code would do what you want:
> 
> name <- paste0("a", 1)
> assign(x=name, value=1)
> save(get(name), file=paste0(name, ".RData"))
> 

I tried that in R2.15.1 and got the error message:

Error in save(get(name), file = paste0(name, ".RData")) : 
  object ‘get(name)’ not found

Using the list argument "worked":

save(list=name, file=paste0(name, ".RData"))

Berend




--
View this message in context: http://r.789695.n4.nabble.com/why-does-this-simple-example-NOT-work-tp4637158p4637228.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list