Re: [Rd] Saving nothing with save()

From: Simon Urbanek <>
Date: Mon, 19 Dec 2011 10:38:34 -0500


On Dec 19, 2011, at 6:39 AM, Martin Maechler wrote:

>>>>>> Barry Rowlingson <>
>>>>>>    on Sun, 18 Dec 2011 01:32:52 +0000 writes:

>> Scenario: Here I am working away in R. I've got results
>> that prove global warming is anthropogenic and also the
>> solution for producing limitless carbon-neutral energy
>> from nuclear fusion. Its been a good day.

>> So, I want to save my work. I don't want to overwrite my
>> current .RData, so I save it to another file:

>> save(file="prize.RData") # just need to email this to the
>> Nobel committee q() Save workspace image? [y/n/c]: - "no"
>> I don't want to save the workspace image, I just saved
>> everything to "prize.RData". But gee, it did seem to do
>> that quite quickly considering the volume of evidential
>> data in my work. My unix shell prompt returns.

>> Uh oh. See what I did there? I typed 'save' when I meant
>> 'save.image'.  What does that give me?

>> A 42 byte, empty, latest.RData, and because there was no
>> warning or error I quit without saving it
>> again. Oops. Massive Data Loss.

>> Is there any reason why save(file="file.RData") couldn't
>> warn or error if you try and save nothing? There's no
>> obvious check in the R code for save.

>> Barry

>> PS the above scenario is fictional.

> really? ;-)
> well, after *not* save()ing all your findings, it wouldn't have
> been such a good day, would it?

well, in spite of that.
> I agree that save() should warn or stop in that case.
> I have now committed a version -- to R-devel only --
> which stop()s if 'pretest=TRUE' and uses warning() otherwise,

I don't think I like that - why should it warn/stop in any case even when the use is absolutely legal?

I think this is the wrong approach - the whole idea was to warn on unintended *interactive* use - breaking existing code in the process is IMHO not necessary. I don't think save(list=x, file=y)
should fail even if x is empty - that makes it fail for completely legal code. What Barry was worried about was the interactive case of save(file=x)
which should IMHO warn (there is a precedent for stopping as well - see tar - so I won't object).

I really see no reason for adding the pretest flag - it makes no sense since is warns anyway so it doesn't help at all. I would propose changing *only* the behavior of save(file=x) (to warn or stop - personally I prefer former) and not anything else.

> e.g., in the case of save.image() when there's nothing to save.

Why should save.image() warn? Again, it causes unnecessary trouble for automated saving... empty workspace is probably even more common that using save(file=foo) ... If save() was fixed as above, that would be a non-issue.

> Thank you, Barry. for the suggestion!

Well, you did not follow his suggestion, though ;)


> Martin

>> When did I last have a good day?

(I wish you more of those..)
> ______________________________________________
> mailing list
> mailing list Received on Mon 19 Dec 2011 - 15:40:29 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 21 Dec 2011 - 21:10:20 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive