timhesterberg at gmail.com
2008-Aug-22 22:45 UTC
[Rd] save() should not overwrite a file if an error occurs (PR#12583)
If save() fails because an object is not found, it should not overwrite an existing file.> a <- 1:9 > save(a, file = "a.rda") > rm(a) > load("a.rda") > a[1] 1 2 3 4 5 6 7 8 9> rm(a) > save(a, file = "a.rda")Error in save(a, file = "a.rda") : object 'a' not found> load("a.rda")Error in load("a.rda") : error reading from connection I've been saving copies of huge objects into files like a.rda, then removing the objects. If I then happen to save again, I don't want to lose my data. --please do not edit the information below-- Version: platform = i486-pc-linux-gnu arch = i486 os = linux-gnu system = i486, linux-gnu status major = 2 minor = 7.1 year = 2008 month = 06 day = 23 svn rev = 45970 language = R version.string = R version 2.7.1 (2008-06-23) Locale: LC_CTYPE=en_US;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=en_US;LC_PAPER=en_US;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US;LC_IDENTIFICATION=C Search Path: .GlobalEnv, package:Rfixes, package:Rcode, package:aggregate, package:stats, package:graphics, package:grDevices, package:utils, package:datasets, package:showStructure, package:splus2R, package:methods, Autoloads, package:base [[alternative HTML version deleted]]
Henrik Bengtsson
2008-Aug-22 23:30 UTC
[Rd] save() should not overwrite a file if an error occurs (PR#12583)
I don't know what save() "should" do - your use case is quite special - but I agree it would be better if save() tests for the existence of all object(s) to be saved before opening the connection (and thereby overwrite the existing file). A workaround for you is to do: dummy <- a; save(a, file="a.rda"); This should give an error before save() is called. FYI, saveObject() of R.utils does protect you this way too, e.g.> library("R.utils"); > a <- 1:9 > saveObject(a, file="a.rda") > rm(a) > a <- loadObject(file="a.rda") > a[1] 1 2 3 4 5 6 7 8 9> rm(a) > saveObject(a, file="a.rda")Error in saveObject(a, file = "a.rda") : object "a" not found> a <- loadObject(file="a.rda") > a[1] 1 2 3 4 5 6 7 8 9 /Henrik On Fri, Aug 22, 2008 at 3:45 PM, <timhesterberg at gmail.com> wrote:> If save() fails because an object is not found, > it should not overwrite an existing file. > >> a <- 1:9 >> save(a, file = "a.rda") >> rm(a) >> load("a.rda") >> a > [1] 1 2 3 4 5 6 7 8 9 >> rm(a) >> save(a, file = "a.rda") > Error in save(a, file = "a.rda") : object 'a' not found >> load("a.rda") > Error in load("a.rda") : error reading from connection > > I've been saving copies of huge objects into > files like a.rda, then removing the objects. > If I then happen to save again, I don't want to lose > my data. > > > --please do not edit the information below-- > > Version: > platform = i486-pc-linux-gnu > arch = i486 > os = linux-gnu > system = i486, linux-gnu > status > major = 2 > minor = 7.1 > year = 2008 > month = 06 > day = 23 > svn rev = 45970 > language = R > version.string = R version 2.7.1 (2008-06-23) > > Locale: > LC_CTYPE=en_US;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=en_US;LC_PAPER=en_US;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US;LC_IDENTIFICATION=C > > Search Path: > .GlobalEnv, package:Rfixes, package:Rcode, package:aggregate, > package:stats, package:graphics, package:grDevices, package:utils, > package:datasets, package:showStructure, package:splus2R, package:methods, > Autoloads, package:base > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Seemingly Similar Threads
- help (using ?) does not handle trailing whitespace (PR#11537)
- scoping problem when calling lm(precomputed formula, weights) from function (PR#11540)
- loading multiple .Rdata and preserving variable names
- Reading through a group of .RData files
- write.table equivalent for lists?