Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save object using variable with object name [duplicate]

Tags:

r

save

Possible Duplicate:
how to save() with a particular variable name

I'm wondering what an easy way is to save an object in R, using a variable objectName with the name of the object to be saved. I want this to easy save objects, with their name in the file name.

I tried to use get, but I didn't manage to save the object with it's original object name.

Example:

If I have the object called "temp", which I want to save in the directory "dataDir". I put the name of the object in the variable "objectName".

Attempt 1:

objectName<-"temp"
save(get(objectName), file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

This didn't work, because R tries to save an object called get(objectName), instead of the result of this call. So I tried the following:

Attempt 2:

objectName<-"temp"
object<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

This obviously didn't work, because R saves the object with name "object", and not with name "temp". After loading I have a copy of "object", instead of "temp". (Yes, with the same contents...but that is not what I want :) ). So I thought it should be something with pointers. So tried the following:

Attempt 3:

objectName<-"temp"
object<<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

Same result as attempt 2. But I'm not sure I'm doing what I think I'm doing.

What is the solution for this?

like image 246
FBE Avatar asked Jun 18 '12 13:06

FBE


1 Answers

Try save(list=objectName, file=paste(objectName, '.Rdata', sep='') ).

The key is that the list argument to save takes a list of character strings that is the names of the objects to save (rather than the actual objects passed through ...).

like image 118
Greg Snow Avatar answered Sep 30 '22 06:09

Greg Snow