[Rd] Error: package/namespace load failed for 'fortunes'

Jeffrey Horner jeff.horner at vanderbilt.edu
Wed Sep 13 17:31:01 CEST 2006


Gregor Gorjanc wrote:
> Hello!
> 
> I have the following R code in my .Rprofile file - just for fun.
> 
>   library(fortunes)
>   fortune()
>   detach("package:fortunes")
> 
> This works nicely in R 2.3.1, but it throws the following error under
> latest R-devel:
> 
> ...
> ...
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
> 
> Error in rbind(rval, read.table(file, header = TRUE, sep = ";", quote =
> "\"",  :
>         could not find function "read.table"
> Error: .onLoad failed in 'loadNamespace' for 'fortunes'
> Error: package/namespace load failed for 'fortunes'
> 
> If I start R-devel with empty .Rprofile I am able to issue above R code
> without problems. Is this caused by move of read.table() to utils package?

Your intuition was right. Just add library(utils) before 
library(fortunes), and it works. Your .Rprofile is executed before 
.First.sys() (which loads default packages) in base package.

?Startup explains it all.

This raises an interesting topic for me:

  In R-2.3.1, .First.sys() autloads() a few functions from the various 
default packages (utils, stats, methods, graphics) IF those packages 
weren't specified in the default packages option (or the environment 
variable R_DEFAULT_PACKAGES). For instance, if a user doesn't want the 
utils package automatically loaded, then .First.sys() does this:

     sch <- search()
     if(! "package:utils" %in% sch) {
         autoload("example", "utils")
         autoload("methods", "utils")
         autoload("str", "utils")
     }

which will automagically load utils if a call to example, methods, or 
str is made (why just those three? why not others in utils). I presume 
there was some heuristic to determine exactly which functions were 
autoloaded.

Now in R-trunk today, I see that there are no autloaded functions set up 
from .First.sys() for any of the default packages. So if R is started 
with R_DEFAULT_PACKAGES=NULL, then no default packages will be loaded 
and no functions will be set up via autoload(). Why?

Jeff
-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner




More information about the R-devel mailing list