[prev in list] [next in list] [prev in thread] [next in thread] 

List:       r-help
Subject:    Re: [R] Why is rm(list=ls()) bad practice?
From:       Duncan Murdoch <murdoch.duncan () gmail ! com>
Date:       2021-01-22 15:50:37
Message-ID: 4d6d2019-6e31-bcd9-08ca-fba2e776c16f () gmail ! com
[Download RAW message or body]

I think it's always difficult and sometimes impossible to take an 
existing session and convert it to the vanilla state, but it's very easy 
to run a new instance of R from an existing one.

So instead of a clearws() function, I'd suggest a "runInVanilla" 
function, that takes some code as input, starts up a vanilla session and 
collects the output.

This is quite similar to what reprex::reprex does, maybe not different 
at all.

Duncan Murdoch

On 22/01/2021 10:37 a.m., J C Nash wrote:
> Thanks Duncan for a clear argument about the "why".
> 
> The suggestion of R --vanilla started a train of thought that one could do \
> something like 
> clearws <- function(){ # Try to clear workspace
> tmp <- readline("Are you sure you want to clear the workspace? ")
> print(tmp)
> if ( substr(toupper(tmp),1,1) != "Y" ){
> return(0)
> }
> #  rm(tmp)
> tgt<-parent.env(environment())
> print(ls(tgt))
> rm(list = ls(tgt, all.names = TRUE),envir=tgt) #will clear all objects includes \
> hidden objects. gc() #free up memrory and report the memory usage.
> # What should we return?
> # Can we offer interactive control?
> # How about packages?
> }
> 
> and call clearws() at the start of an example.
> 
> Contact me off-list if you have suggestions for improving this. I'd like to be able \
> to preface examples with such a function that would render the session "vanilla" \
> but from inside. That means removing packages that might have altered / replaced / \
> masked standard functions. That might not be possible, but the idea is attractive \
> to me as someone who mostly uses R in tests of tools that get used by others.
> 
> Best, JN
> 
> 
> On 2021-01-21 6:05 p.m., Duncan Murdoch wrote:
> > On 21/01/2021 5:20 p.m., J C Nash wrote:
> > > In a separate thread Jeff Newmiller wrote:
> > > > rm(list=ls()) is a bad practice... especially when posting examples. It \
> > > > doesn't clean out everything and it removes objects created by the user.
> > > 
> > > This query is to ask
> > > 
> > > 1) Why is it bad practice to clear the workspace when presenting an example?
> > > I'm assuming here that people who will try R-help examples will not run them in \
> > > the middle of something else, which I agree would be unfortunates.
> > 
> > I think that's exactly the concern.  I doubt it would have happened in this \
> > instance, but in other cases, people might copy and paste a complete example \
> > before reading it.  It's safer to say:  "Run this code in a clean workspace:", \
> > rather than cleaning it out yourself.
> > 
> > Duncan Murdoch
> > 
> > 
> > However, one of the
> > > not very nice aspects of R is that it is VERY easy to have stuff hanging around \
> > > (including overloaded functions and operators) that get you into trouble, and \
> > > indeed make it harder to reproduce those important "minimal reproducible \
> > > examples".  This includes the .RData contents. (For information, I can \
> > > understand the attraction, but I seem to have been burned much more often than \
> > > I've benefited from a pre-warmed oven.) 
> > > 2) Is there a good command that really does leave a blank workspace? For \
> > > testing purposes, it would be useful to have an assured blank canvas.
> > 
> > Yes, start R with
> > 
> > R --vanilla
> > 
> > Duncan Murdoch
> > 
> > > 
> > > This post is definitely not to start an argument, but to try to find ways to \
> > > reduce the possibilities for unanticipated outcomes in examples.
> > > 
> > > Cheers, JN
> > > 
> > > ______________________________________________
> > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > 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@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic