[Rd] $new cannot be accessed when running from Rscript and methods package is not loaded

Kirill Müller kirill.mueller at ivt.baug.ethz.ch
Tue Feb 11 02:53:22 CET 2014


Hi


Accesses the $new method for a class defined in a package fails if the 
methods package is not loaded. I have created a test package with the 
following single code file:

newTest <- function() {
   cl <- get("someClass")
   cl$new
}

someClass <- setRefClass("someClass")

(This is similar to code actually used in the testthat package.)

If methods is not loaded, executing the newTest function fails in the 
following scenarios:

- Package "depends" on methods (scenario "depend")
- Package "imports" methods and imports either the setRefClass function 
(scenario "import-setRefClass") or the whole package (scenario 
"import-methods")

It succeeds if the newTest function calls require(methods) (scenario 
"require").

The script at 
https://raw2.github.com/krlmlr/methodsTest/master/test-all.sh creates an 
empty user library in subdirectory r-lib of the current directory, 
installs devtools, and tests the four scenarios by repeatedly installing 
the corresponding version of the package and trying to execute newTest() 
from Rscript. I have attached the output. The package itself is on 
GitHub: https://github.com/krlmlr/methodsTest , there is a branch for 
each scenario.

Why does it seem to be necessary to load the methods package here?


Best regards

Kirill



More information about the R-devel mailing list