[R] save an object by dynamicly created name

David Winsemius dwinsemius at comcast.net
Mon Nov 2 06:18:16 CET 2009


On Nov 1, 2009, at 11:28 PM, Henrik Bengtsson wrote:

> On Sun, Nov 1, 2009 at 7:48 PM, David Winsemius <dwinsemius at comcast.net 
> > wrote:
>>
>> On Nov 1, 2009, at 10:16 PM, Henrik Bengtsson wrote:
>>
>>> path <- "data";
>>> dir.create(path);
>>>
>>> for (i in 1:10) {
>>>  m <- i:5;
>>>  filename <- sprintf("m%02d.Rbin", i);
>>>  pathname <- file.path(path, filename);
>>>  save(m, file=pathname);
>>> }
>>>
>>
>> That would result in each of the ten files containing an object  
>> with the
>> same  name == "m". (Also on my system R data files have type Rdta.)  
>> So I
>> thought what was requested might have been a slight mod:
>>
>> path <- "~/";
>> dir.create(path);
>>
>> for (i in 1:10) {
>>  assign( paste("m", i, sep=""),  i:5)
>>  filename <- sprintf("m%02d.Rdta", i)
>>  pathname <- file.path(path, filename)
>>  obj =get(paste("m", i, sep=""))
>>  save(obj, file=pathname)
>> }
>
> Then a more convenient solution is to use saveObject() and
> loadObject() of R.utils.  saveObject() does not save the name of the
> object save.

The OP asked for this outcome :

" I would like to save m as m1, m2, m3 ...,
to file /home/data/m1, /home/data/m2, home/data/m3, ..."


>  If you want to save multiple objects, the wrap them up
> in a list.

I agree that a list would makes sense if it were to be stored in one  
file , although it was not what requested. But wouldn't that require  
assign()-ing a name before list()-wrapping?

I suppose we ought to mention that the use of assign to create a  
variable is a FAQ ... 7.21? Yep, I have now referred to it a  
sufficient number of times to refer to it by number.

http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f

-- 
David

>  loadObject() does not assign variable, but instead return
> them. Example:
>
> library("R.utils");
> x <- list(a=1,b=LETTERS,c=Sys.time());
> saveObject(x, file="foo.Rbin");
> y <- loadObject("foo.Rbin");
> stopifnot(identical(x,y));

>
> So, for the original example, I'd recommend:
>
> library("R.utils");
> path <- "data";
> mkdirs(path);
>
> for (i in 1:10) {
>  m <- i:5;
>  filename <- sprintf("m%02d.Rbin", i);
>  saveObject(m, file=filename, path=path);
> }
>
> and loading the objects back as:
>
> for (i in 1:10) {
>  filename <- sprintf("m%02d.Rbin", i);
>  m <- loadObject(filename, path=path);
>  print(m);
> }
> /Henrik
>
>>
>> --
>> David.
>>
>>> /H
>>>
>>> On Sun, Nov 1, 2009 at 6:53 PM, jeffc <hcen at andrew.cmu.edu> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I would like to save a few dynamically created objects to disk. The
>>>> following is the basic flow of the code segment
>>>>
>>>> for(i = 1:10) {
>>>>  m = i:5
>>>>  save(m, file = ...) ## ???
>>>> }
>>>> To distinguish different objects to be saved, I would like to  
>>>> save m as
>>>> m1,
>>>> m2, m3 ..., to file /home/data/m1, /home/data/m2, home/data/m3, ...
>>>>
>>>> I tried a couple of methods on translating between object names and
>>>> strings
>>>> (below) but couldn't get it to work.
>>>> https://stat.ethz.ch/pipermail/r-help/2008-November/178965.html
>>>> http://tolstoy.newcastle.edu.au/R/help/04/08/2673.html
>>>>
>>>> Any suggestions would be appreciated.
>>>>
>>>> thanks
>>>>
>>>> Hao
>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/save-an-object-by-dynamicly-created-name-tp26155437p26155437.html
>>>> Sent from the R help mailing list archive at Nabble.com.
>>>>
>>>> ______________________________________________
>>>> R-help at 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.
>>>>
>>>
>>> ______________________________________________
>>> R-help at 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.
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>> ______________________________________________
>> R-help at 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.
>>

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list