In my.ls() you ought to convert the pos argument to an environment and consistently use that environment in the calls to eval, get, and ls in the function. E.g., with the following modification
my.ls1 <- function (pos = 1, sorted = FALSE, envir = as.environment(pos)) { .result <- sapply(ls(envir = envir, all.names = TRUE), function(..x) object.size(eval(as.symbol(..x), envir = envir))) if (sorted) { .result <- rev(sort(.result)) } .ls <- as.data.frame(rbind(as.matrix(.result), `**Total` = sum(.result))) names(.ls) <- "Size" .ls$Size <- formatC(.ls$Size, big.mark = ",", digits = 0, format = "f") .ls$Mode <- c(unlist(lapply(rownames(.ls)[-nrow(.ls)], function(x) mode(eval(as.symbol(x), envir = envir)))), "-------") .ls } we get: > sorted <- 10:1 # put a variable in .GlobalEnv that is also in my.ls* > my.ls1() Size Mode my.ls 12,576 function my.ls1 23,424 function sorted 88 numeric **Total 36,088 ------- > my.ls() Size Mode my.ls 12,576 function my.ls1 23,424 function sorted 48 logical **Total 36,048 ------- Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf Of Nordlund, Dan > (DSHS/RDA) > Sent: Thursday, September 08, 2011 8:33 AM > To: r-help@r-project.org > Subject: Re: [R] Variable scoping question > > > -----Original Message----- > > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > > project.org] On Behalf Of jim holtman > > Sent: Thursday, September 08, 2011 6:52 AM > > To: Bos, Roger > > Cc: r-help@r-project.org > > Subject: Re: [R] Variable scoping question > > > > Here is a function I use to look at the sizes of objects: > > > > my.ls <- > > function (pos = 1, sorted = FALSE) > > { > > .result <- sapply(ls(pos = pos, all.names = TRUE), function(..x) > > object.size(eval(as.symbol(..x)))) > > if (sorted) { > > .result <- rev(sort(.result)) > > } > > .ls <- as.data.frame(rbind(as.matrix(.result), `**Total` = > > sum(.result))) > > names(.ls) <- "Size" > > .ls$Size <- formatC(.ls$Size, big.mark = ",", digits = 0, > > format = "f") > > .ls$Mode <- c(unlist(lapply(rownames(.ls)[-nrow(.ls)], function(x) > > mode(eval(as.symbol(x))))), > > "-------") > > .ls > > } > > > > Jim, > > I thought I would try out your function above. I copy-and-pasted the > function into a newly started, > vanilla R session, then ran the following code. > > > x <- 1:1000 > > my.ls() > Size Mode > my.ls 12,576 function > x 4,040 character > **Total 16,616 ------- > > > > I don't understand the character mode for the vector x. Any thoughts? Here > is my sessionInfo(). > > > sessionInfo() > R version 2.13.1 (2011-07-08) > Platform: x86_64-pc-mingw32/x64 (64-bit) > > locale: > [1] LC_COLLATE=English_United States.1252 > [2] LC_CTYPE=English_United States.1252 > [3] LC_MONETARY=English_United States.1252 > [4] LC_NUMERIC=C > [5] LC_TIME=English_United States.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > loaded via a namespace (and not attached): > [1] tools_2.13.1 > > > > > Dan > > Daniel J. Nordlund > Washington State Department of Social and Health Services > Planning, Performance, and Accountability > Research and Data Analysis Division > Olympia, WA 98504-5204 > > > ______________________________________________ > 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. ______________________________________________ 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.