[R-gregmisc-users] SF.net SVN: r-gregmisc:[1368] trunk/gdata
Brought to you by:
warnes
From: <ar...@us...> - 2009-12-06 03:12:28
|
Revision: 1368 http://r-gregmisc.svn.sourceforge.net/r-gregmisc/?rev=1368&view=rev Author: arnima Date: 2009-12-06 03:12:14 +0000 (Sun, 06 Dec 2009) Log Message: ----------- Improved ll() so user can limit output to specified classes Modified Paths: -------------- trunk/gdata/R/ll.R trunk/gdata/man/ll.Rd Modified: trunk/gdata/R/ll.R =================================================================== --- trunk/gdata/R/ll.R 2009-11-16 13:51:10 UTC (rev 1367) +++ trunk/gdata/R/ll.R 2009-12-06 03:12:14 UTC (rev 1368) @@ -1,23 +1,23 @@ -ll <- function(pos=1, unit="KB", digits=0, dimensions=FALSE, function.dim="", - sort.elements=FALSE, ...) +ll <- function(pos=1, unit="KB", digits=0, dim=FALSE, sort=FALSE, class=NULL, + invert=FALSE, ...) { - get.object.classname <- function(object.name, pos) + get.object.class <- function(object.name, pos) { object <- get(object.name, pos=pos) - classname <- class(object)[1] - return(classname) + class <- class(object)[1] + return(class) } - get.object.dimensions <- function(object.name, pos) + get.object.dim <- function(object.name, pos) { object <- get(object.name, pos=pos) if(class(object)[1] == "function") - dimensions <- function.dim + dim <- "" else if(!is.null(dim(object))) - dimensions <- paste(dim(object), collapse=" x ") + dim <- paste(dim(object), collapse=" x ") else - dimensions <- length(object) - return(dimensions) + dim <- length(object) + return(dim) } get.object.size <- function(object.name, pos) @@ -54,33 +54,42 @@ else if(environmentName(as.environment(pos)) == "Autoloads") { object.frame <- data.frame(rep("function",length(ls(pos,...))), - rep(0,length(ls(pos,...))), row.names=ls(pos,...)) - if(dimensions) + rep(0,length(ls(pos,...))), + row.names=ls(pos,...)) + if(dim) { - object.frame <- cbind(object.frame, rep(function.dim,nrow(object.frame))) - names(object.frame) <- c("Class", unit, "Dimensions") + object.frame <- cbind(object.frame, rep("",nrow(object.frame))) + names(object.frame) <- c("Class", unit, "Dim") } else names(object.frame) <- c("Class", unit) } else { - class.vector <- sapply(ls(pos,...), get.object.classname, pos=pos) + class.vector <- sapply(ls(pos,...), get.object.class, pos=pos) size.vector <- sapply(ls(pos,...), get.object.size, pos=pos) size.vector <- round(size.vector/denominator, digits) object.frame <- data.frame(class.vector=class.vector, - size.vector=size.vector, row.names=names(size.vector)) + size.vector=size.vector, + row.names=names(size.vector)) names(object.frame) <- c("Class", unit) - if(dimensions) - object.frame <- cbind(object.frame, Dim=sapply(ls(pos,...), - get.object.dimensions, pos=pos)) + if(dim) + object.frame <- cbind(object.frame, + Dim=sapply(ls(pos,...),get.object.dim,pos=pos)) } if(was.list) { detach(pos=2) - if(!sort.elements) + if(!sort) object.frame <- object.frame[original.rank, ] } + if(!is.null(class)) + { + include <- object.frame$Class %in% class + if(invert) + include <- !include + object.frame <- object.frame[include,] + } return(object.frame) } Modified: trunk/gdata/man/ll.Rd =================================================================== --- trunk/gdata/man/ll.Rd 2009-11-16 13:51:10 UTC (rev 1367) +++ trunk/gdata/man/ll.Rd 2009-12-06 03:12:14 UTC (rev 1368) @@ -9,8 +9,8 @@ object, its elements are listed and described. } \usage{ -ll(pos=1, unit="KB", digits=0, dimensions=FALSE, function.dim="", - sort.elements=FALSE, ...) +ll(pos=1, unit="KB", digits=0, dim=FALSE, sort=FALSE, class=NULL, + invert=FALSE, ...) } \arguments{ \item{pos}{environment position number, environment name, data frame, @@ -19,10 +19,12 @@ "MB", or first letter.} \item{digits}{number of decimals to display when rounding object size.} - \item{dimensions}{whether object dimensions should be returned.} - \item{function.dim}{value to report as the dimension of function - objects.} - \item{sort.elements}{whether elements should be sorted by name.} + \item{dim}{whether object dimensions should be returned.} + \item{sort}{whether elements should be sorted by name.} + \item{class}{character vector for limiting the output to specified + classes.} + \item{invert}{whether to invert the \code{class} filter, so specified + classes are excluded.} \item{...}{passed to \code{ls()}.} } \details{ @@ -54,7 +56,7 @@ ll() ll(all=TRUE) ll("package:base") -ll("package:base")[ll("package:base")$Class!="function",] +ll("package:base", class="function", invert=TRUE) data(infert) ll(infert) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |