User Tools

Site Tools


r-snips

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

r-snips [2017/09/20 19:05] (current)
Line 1: Line 1:
 +======R Snips======
  
 +=====List Memory Usage of R Objects=====
 +
 +This code originates from a [[http://​stackoverflow.com/​questions/​1358003/​tricks-to-manage-the-available-memory-in-an-r-session|StackOverflow document]], and a weblog post by David Smith
 +
 +<code rsplus lsos.R>
 +# improved list of objects
 +.ls.objects <- function (pos = 1, pattern, order.by,
 +                        decreasing=FALSE,​ head=FALSE, n=5) {
 +    napply <- function(names,​ fn) sapply(names,​ function(x)
 +                                         ​fn(get(x,​ pos = pos)))
 +    names <- ls(pos = pos, pattern = pattern)
 +    obj.class <- napply(names,​ function(x) as.character(class(x))[1])
 +    obj.mode <- napply(names,​ mode)
 +    obj.type <- ifelse(is.na(obj.class),​ obj.mode, obj.class)
 +    obj.size <- napply(names,​ object.size)
 +    obj.dim <- t(napply(names,​ function(x)
 +                        as.numeric(dim(x))[1:​2]))
 +    vec <- is.na(obj.dim)[,​ 1] & (obj.type != "​function"​)
 +    obj.dim[vec,​ 1] <- napply(names,​ length)[vec]
 +    out <- data.frame(obj.type,​ obj.size, obj.dim)
 +    names(out) <- c("​Type",​ "​Size",​ "​Rows",​ "​Columns"​)
 +    if (!missing(order.by))
 +        out <- out[order(out[[order.by]],​ decreasing=decreasing),​ ]
 +    if (head)
 +        out <- head(out, n)
 +    out
 +}
 +# shorthand
 +lsos <- function(...,​ n=10) {
 +    .ls.objects(...,​ order.by="​Size",​ decreasing=TRUE,​ head=TRUE, n=n)
 +}
 +</​code>​
r-snips.txt ยท Last modified: 2017/09/20 19:05 (external edit)