[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