A coworker got tired of having to type 'yes' or 'no' after quitting R: he never wanted to save the R workspace when quitting. So he added assignInNamespace lines to his .Rprofile file to replace base::q with one that, by default, called the original with save="no"..
utils::assignInNamespace(".qOrig", base::q, "base") utils::assignInNamespace("q", function(save = "no", ...) base:::.qOrig(save = save, ...), "base") This worked fine until he decide to load the distr package: > suppressPackageStartupMessages(library(distr)) Error: package or namespace load failed for ‘distr’ in loadNamespace(name): there is no package called ‘.GlobalEnv’ distr calls setGeneric("q"), which indirectly causes the environment of base::q, .GlobalEnv, to be loaded as a namespace, causing the error. Giving his replacement q function the environment getNamespace("base") avoids the problem. I can reproduce the problem by making a package that just calls setGeneric("as.hexmode",...) and a NAMEPACE file with exportMethods("as.hexmode"). If my .Rprofile puts a version of as.hexmode with environment .GlobalEnv into the base namespace, then I get the same error when trying to load the package. I suppose this is mostly a curiosity and unlikely to happen to most people but it did confuse us for a while. Bill Dunlap TIBCO Software wdunlap tibco.com [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel