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) } } }

______________________________________________
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.

Reply via email to