[R] How can certain variables be automatically excluded from being saved?

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Thu Apr 1 14:39:45 CEST 2021


On 01/04/2021 4:05 a.m., Ralf Goertz wrote:
> Hi,
> 
> after having read here about the "seed problem" I wonder if there is a
> way to automatically exclude certain variables from being saved when the
> workspace image is saved at the end of an interactive session. I have
> been using .First() and .Last() for ages but apparently they are of no
> help as .First() gets called before loading the workspace and .Last()
> after it has been saved. At least the line
> 
> if (".Random.seed" %in% ls(all.names=T)) rm(.Random.seed, pos=1)
> 
> in either of those functions doesn't have the desired effect.

Jim suggested a way to do that, but I don't think it's really a good 
idea:  it just fixes one aspect of the problem, it doesn't solve the 
whole thing.

The real problem is saving the workspace occasionally, but always 
loading it.  The "always loading" part is automatic, so I think the real 
solution should address the "occasionally saving" part.

If you always save the workspace, things are fine.  You'll save the seed 
at the end of one session, and load it at the beginning of the next.

If you never save the workspace, things are also fine.  You'll always 
generate a new seed in each session that needs one.

Personally, I believe in the "never save it" workflow.  I think it has 
lots of benefits besides the random seed issue:  you won't get a 
more-and-more cluttered workspace over time, you end up with more 
reproducible results, etc.  However, I can understand that some people 
use a different workflow, so "always save it" is sometimes a reasonable 
choice.

So the real problem is the "sometimes save it" workflow, which is 
**encouraged** by the default q(save = "default") option, which asks 
when interactive.  Changing the default to act like q(save = "no") would 
be my preference (and that's how I configure things), but changing it to 
act like q(save = "yes") would be an improvement over the current choice.

Duncan Murdoch



More information about the R-help mailing list