Skip to content
Back to formatted view

Raw Message

Message-ID: <CAP01uRm_ru7tjS2pmaCweii69YzkEiVw-zaf0ZTJ1+CPUQ_8Rw@mail.gmail.com>
Date: 2013-03-12T17:25:19Z
From: Gabor Grothendieck
Subject: ls() with different defaults: Solution;
In-Reply-To: <78AB1F8EE6D76741958317F29EA5F1CB013074C50A89@USCTMXP51004.merck.com>

On Tue, Mar 12, 2013 at 12:59 PM, Szumiloski, John
<john_szumiloski at merck.com> wrote:
> Dear useRs,
>
> Some time ago I queried the list as to an efficient way of building a function which acts as ls() but with a different default for all.names:
>
> http://tolstoy.newcastle.edu.au/R/e6/help/09/03/7588.html
>
> I have struck upon a solution which so far has performed admirably.  In particular, it uses ls() and not its explicit source code, so only has a dependency on its name and the name of its all.names argument.  Here is my solution:
>
> lsall  <-  function(...) {
>
>      thecall <- as.call(c(as.name('ls'), list(...)))
>      newcall <- match.call(definition=ls, call=thecall)
>      if( !('all.names' %in% names(newcall)) ) newcall[['all.names']] <- TRUE
>      eval(newcall, envir=parent.frame())
>
>    }#### end lsall
>
> In my hands this function has always acted exactly as I expected, identically to ls() but with the default of all.names=TRUE (which can be overridden as usual).  In particular, it (i) gets the proper search path position right; (ii) works as expected within a browser() session.  I am sharing this in case someone finds this construction helpful for other purposes, and in case someone finds a failing case they then have the option of communicating it back here.

Also have a look at the Defaults package, e.g.

library(Defaults)
ls2 <- ls
setDefaults(ls2, all.names = TRUE)

# test
.a <- 1
ls()
ls2()


--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com