[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