save an object by dynamicly created name
On Sun, Nov 1, 2009 at 9:18 PM, David Winsemius <dwinsemius at comcast.net> wrote:
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.
That comment was not for the OP, but for saveObject()/loadObject() in general.
But wouldn't that require assign()-ing a name before list()-wrapping?
Nope, the whole point of using saveObject()/loadObject() is to save
the objects/values without their names that you happens to choose in
the current session, and to avoid overwriting existing ones in your
next session. My example could also have been:
library("R.utils");
saveObject(list(a=1,b=LETTERS,c=Sys.time()), file="foo.Rbin");
y <- loadObject("foo.Rbin");
z <- loadObject("foo.Rbin");
stopifnot(identical(y,z));
If you really want to attach the elements of the saved list, do:
attachLocally(loadObject("foo.Rbin"));
str(a)
num 1
str(b)
chr [1:26] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" ...
str(c)
POSIXct[1:1], format: "2009-11-01 21:30:41"
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
My personal take on assign() and get() is that if you find yourself using them (at this level), there is a good chance there exists a better solution that you should use instead. My $.02 /H
-- 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