Something similar in case anyone is interested, my own 'lls' command:

################################################################################
# This function performs a similar operation to the Unix command 'ls -l' 
# It works like ls() in R except that it will also display object class,
# dimension/length, and object size.  
# It can also take a class filter to view only objects of a certain type.
#
# Usage:
#   lls() # list all objects
#   lls(environmentName) # list all the objects in the specified environment
#   lls(pattern="foo") # list all objects whose name matches pattern specified
#   lls(classFilter="data.frame") # find all data frame objects
#
lls <- function(name, pos=-1, envir=as.environment(pos), all.names=FALSE, 
  pattern, classFilter)
{ 
  if( !missing(name) )
  {
    envir = name
  } else
  {
    envir = parent.frame()
  }
  
  lsList = ls(name, pos, envir, all.names, pattern)   

  cat("\nName: Class, Length, Size\n")
  cat("-------------------------\n")
  for( item in lsList )
  {
    realItem = eval(parse(text = item), envir)
    itemClass = class(realItem)
    itemSize = object.size(realItem)
    itemDimension = paste(dim(realItem), collapse="x" )
    if( itemDimension == "" )
    {
      itemDimension = length(realItem)
    }
    
    classFilterMatches = !missing(classFilter) && itemClass == classFilter
    if( classFilterMatches || missing(classFilter) )
    {
      format(cat(item, ": ", itemClass, ", ", itemDimension, ", ", itemSize, 
"\n", 
        sep=""), justify="centre")
    } 
  } 
  cat("\n") 
  
  invisible(lsList)
}


################################################################################
# Overload the internal object.size function to return the size in B/KB/MB
#
object.size <-function(x)
{
    size = .Internal(object.size(x)) 
    
    if (size<1024)
    {
        size=paste(size, "B")
    }
    else if (size>=1024 & size < 1024*1024)
    {
        size=paste( round(size/1024, 1), "KB")
    }
    else
    {
        size=paste( round( size/1024/1024, 1 ),"MB")
    }
    
    return(size)
}


Creates output like:

Name: Class, Length, Size
-------------------------
calc: function, 1, 4.7 KB
data: data.frame, 175656x76, 100.9 MB
dollar: function, 1, 7.1 KB
file: character, 1, 120 B
fileList: character, 17, 1.9 KB
lls: function, 1, 17.6 KB
object.size: function, 1, 7.8 KB
changes: data.frame, 175656x70, 94.5 MB
columns: integer, 70, 304 B
value: numeric, 1, 32 B

Feel free to clean up & use as appropriate.

HTH,
John

-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On 
Behalf Of andrew
Sent: Tuesday, March 10, 2009 5:46 PM
To: r-help@r-project.org
Subject: Re: [R] R equivalent to MATLAB's "whos" Command?

I saw this in
http://groups.google.com.au/group/r-help-archive/browse_thread/thread/7dca300a7fde5286/718dc5f1405618c9?lnk=gst&q=sort(+sapply(ls()%2Cfunction(x){object.size(get(x))}))#718dc5f1405618c9

The command is something like

sort( sapply(ls(),function(x){object.size(get(x))}))

very useful, so I have added it to my .First function


On Mar 11, 8:29 am, Jason Rupert <jasonkrup...@yahoo.com> wrote:
> Wow.  Thank you for your quick response.  However, I'm looking for an R 
> command that lists what is currently in the R workspace.
>
> Here is a link to a description of the MATLAB "whos" 
> command:http://www.math.carleton.ca/old/help/matlab/MathWorks_R13Doc/techdoc/...
> Essentially, it does the following:
> "who lists the variables currently in the workspace.
>
> whos lists the current variables and their sizes and types. It also reports 
> the totals for sizes.
>
> who('global') and whos('global') list the variables in the global workspace
> "
>
> --- On Tue, 3/10/09, Jorge Ivan Velez <jorgeivanve...@gmail.com> wrote:
>
>
>
> > From: Jorge Ivan Velez <jorgeivanve...@gmail.com>
> > Subject: Re: [R] R equivalent to MATLAB's "whos" Command?
> > To: jasonkrup...@yahoo.com
> > Cc: r-h...@r-project.org
> > Date: Tuesday, March 10, 2009, 4:14 PM
> > Dear Jason,
> > How about this?
>
> > ?ls()
> > ls()
>
> > HTH,
>
> > Jorge
>
> > On Tue, Mar 10, 2009 at 5:05 PM, Jason Rupert
> > <jasonkrup...@yahoo.com>wrote:
>
> By any chance is there an R equivalent to MATLAB' "whos" command? I tried 
> searching R and R-seek, but didn't really come up with anything. There are 
> several items I would like to make sure are stored in the workspace and check 
> their values.  Thank you again for your help and any feedback.
>
>
>
> > > > ?workspace
> > > No documentation for 'workspace' in specified
> > packages and libraries:
> > > you could try '??workspace'
> > > > ??workspace
> > > No help files found with alias or concept or title
> > matching using fuzzy matching.
> > > > ??whos
> > > No help files found with alias or concept or title
> > matching using regular expression matching.
> > > > ??whos
> > > No help files found with alias or concept or title
> > matching using regular expression matching.
> > > > ?whos
> > > No documentation for 'whos' in specified
> > packages and libraries:
> > > you could try '??whos'
>
> > >        [[alternative HTML version deleted]]
>
> > > ______________________________________________
> > > r-h...@r-project.org mailing list
> > >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-h...@r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
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.
>>> This e-mail and any attachments are confidential, may contain legal, 
>>> professional or other privileged information, and are intended solely for 
>>> the addressee.  If you are not the intended recipient, do not use the 
>>> information in this e-mail in any way, delete this e-mail and notify the 
>>> sender. CEG-IP1

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to