On 11/23/06, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > On 11/23/06, Antonio, Fabio Di Narzo <[EMAIL PROTECTED]> wrote: > > 2006/11/23, Prof Brian Ripley <[EMAIL PROTECTED]>: > > > On Thu, 23 Nov 2006, Antonio, Fabio Di Narzo wrote: > > > > > > > Dear all, > > > > I'm indirectly faced with the fact that setting the 'tsp' attribute of > > > > an object modifies its class definition: > > > >> class( structure(1:2, tsp=c(1,2,1), class=c("myts","ts")) ) > > > > [1] "ts" "myts" > > > > > > > > In general, this is of really little (ok, I admit: totally no) > > > > interest for me because 'myts' class is added just after assigning the > > > > 'tsp' attribute (by calling ts). > > > > However, this behaviour gives me troubles when re-loading a previously > > > > deparsed object, so that: > > > >> x <- ts(1:2) > > > >> class(x) <- c("myts", class(x)) > > > >> dput( x , "temp.dat") > > > >> class(dget("temp.dat")) > > > > [1] "ts" "myts" > > > >> unlink("temp.dat") > > > > > > > > In other words, my real problem should be restated as: how to safely > > > > dump (and then load) an object which has a (perhaps valid) "tsp" > > > > attribute? > > > > More generally: can someone suggest me a safer way to dump/restoring R > > > > objects? > > > > > > save/load. > > > > Ok. That seems to be the final statement: to be sure about the result, > > I have to use binary files for storing R objects (even pure data > > objects with attached attributes) instead of dumped R code. > > If its mainly ascii you are after but the source file part is not important > then note that save can save to ascii files: > > y <- x > save("x", file = "temp.rda", ascii = TRUE) > rm(x) > load("temp.rda") > identical(x, y) > readLines("temp.rda") > unlink("temp.rda")
and here is a workaround if you are willing to do a bit of work when outputting the objects: # test data x <- ts(1:2) class(x) <- c("myts", "ts") y <- x # need 3 output statements dump("x", "temp.R") write("attributes(x) <-", "temp.R", append = TRUE) write(deparse(attributes(x)), "temp.R", append = TRUE) # source it back in and check rm(x) source("temp.R") identical(x,y) readLines("temp.R") # clean up unlink("temp.R") ______________________________________________ R-help@stat.math.ethz.ch 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.