[R] object.size() not recognized within .First()

Geof Givens geof at stat.colostate.edu
Tue Sep 6 16:24:07 CEST 2011


I have a function called within .First(), as in

.First=function() {
...blah...
BIG(partofblah)   #BIG is my function, n=partofblah when called
...foo...
  }

The partofblah component of blah is a number obtained from readline(), 
which is then an argument to BIG()

BIG=function(n=10,removeask=T) {
   z <- sapply(ls(pos=1), function(x)object.size(get(x)))
   ...stuff... }

When .First() executes upon startup and readline() determines 
partofblah, the call to BIG() creates an error as follows:

Hello.  How many huge items to consider deleting?  (Enter=none)
3
Error in FUN(c("a", "a1", "a2", "aa", "aaa", "abline", "ad", "adj11",  : 
could not find function "object.size"

The "Hello" line is a prompt from .First().  "3" is my input.  The error 
occurs when BIG() is executed because object.size() is called 
immediately upon entry to BIG().

After this error, execution of .First() from the command line works fine.

I can't figure out what is going wrong.  Any ideas?

Thanks,

Geof



BELOW HERE ARE THE COMPLETE FUNCTIONS:

.First=function() {
   cat("Hello.  How many huge items to consider deleting?  (Enter=none)\n")
   g=eval(parse(text=readline()))
   if (is.numeric(g)) { BIG(n=g)}
   cat("\nOk. What .Rdata file and directory do you want to use?\n\n")
   cat("0 = Default (C:/Users/geof/My Documents)\n")
   cat("1 = ~geof/teach/stat540/2011/R\n")
   cat("c = choose by browsing\n")
   thechosen=readline()
   if (thechosen=="1") {
 
load("c:\\users\\geof\\csu\\teach\\stat540\\2011\\R\\.RData",.GlobalEnv)
     setwd("c:\\users\\geof\\csu\\teach\\stat540\\2011\\R") }
   if (thechosen=="c") {
   cat("Hello.  Choose .RData file to work with...\n")
     where=file.choose()
     rwhere=sub("\\.RData","",where)
     load(where,.GlobalEnv)
     setwd(rwhere)  }
   cat("\n")
   cat(paste("Okay, I've got you working/saving in ",
      getwd()[1],"\n",sep="")) }

BIG=function(n=10,removeask=T) {
   z <- sapply(ls(pos=1), function(x)object.size(get(x)))
   zlab=names(z)
   z=as.matrix(rev(sort(z)))
   zlab=as.matrix(rev(sort(zlab)))
   myzmat=data.frame(id=1:n,name=zlab[1:n],size=z[1:n])
   row.names(myzmat)=NULL
   print(myzmat)
   cat("\nGive c() vector of id's to delete, or return to exit\n")
   thechosen=readline()
   if (thechosen=="") {
      invisible(return()) } else {
      byebye=eval(parse(text=thechosen))
      goodbye=as.character(myzmat$name)[byebye]
      goodtogo=T
      if(removeask) {
        cat("Are you sure to delete (y/n):\n")
        print(goodbye)
        a=readline()
        if(a!="y") goodtogo=F }
      if(goodtogo) {
          rm(list=goodbye,pos=1) } } }



More information about the R-help mailing list