1lls <-
2# A function that expands the functionality of ls()
3function( pos = 1, pat = "", all=FALSE, print=TRUE )
4{
5# First a function that returns length/dim when you ask for it
6dimx <- function(dd) if (is.null(dim(dd))) length(dd) else dim(dd)
7# A vector of object names
8lll <- ls( pos=pos, pattern=pat, all.names=all )
9# Are there any objects at all?
10if( length(lll) > 0 )
11{
12obj.mode <-
13obj.clas <-
14obj.dimx <-
15obj.size <- character(0)
16# Then find mode, class, name and dimension of them and return it
17for(i in 1:length(lll))
18{
19obj.mode[i] <-        eval( parse(text = paste(       "mode(`", lll[i], "`)",sep="")))
20obj.clas[i] <- paste( eval( parse(text = paste(      "class(`", lll[i], "`)",sep=""))), collapse=" " )
21obj.dimx[i] <- paste( eval( parse(text = paste(       "dimx(`", lll[i], "`)",sep=""))), collapse=" " )
22obj.size[i] <- formatC( eval( parse(text = paste("unclass(object.size(`", lll[i], "`))",sep="")))/2^10,
23                        format="f", digits=1, big.mark=",", width=14, flag=" " )
24}
25dfr <-
26data.frame( name = lll,
27            mode = obj.mode,
28           class = obj.clas,
29             dim = obj.dimx,
30      sizeKbytes = obj.size,
31stringsAsFactors=FALSE )
32names( dfr )[5] <- "      size(Kb)"
33print( invisible( dfr ), right=FALSE )
34}
35}
36
37