[R] Variable scoping question

jim holtman jholtman at gmail.com
Mon Sep 12 00:56:55 CEST 2011


Bill,

Thanks for the improvment.  I had not been concerned in looking at the
type; was primarily interested in the sizes.  Will go back and update
the function.

On Thu, Sep 8, 2011 at 11:53 AM, William Dunlap <wdunlap at tibco.com> wrote:
> 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-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Nordlund, Dan
>> (DSHS/RDA)
>> Sent: Thursday, September 08, 2011 8:33 AM
>> To: r-help at r-project.org
>> Subject: Re: [R] Variable scoping question
>>
>> > -----Original Message-----
>> > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> > project.org] On Behalf Of jim holtman
>> > Sent: Thursday, September 08, 2011 6:52 AM
>> > To: Bos, Roger
>> > Cc: r-help at 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 at 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 at 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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?



More information about the R-help mailing list