Robert J. Hijmans
2018-Nov-03 17:29 UTC
[Rd] odd NOTE in R CMD check of data; Rcpp module related
With the current version of the "raster" package (that I maintain), R CMD check on packages "soilDB" and "PopGenReport" have this NOTE: Package: soilDB Check: data for non-ASCII characters New result: NOTE Error in .requirePackage(package) : unable to find required package 'raster' Calls: <Anonymous> ... .findInheritedMethods -> getClass -> getClassDef -> .requirePackage Execution halted In soiDB this is presumably triggered by loading this file:> f <- system.file("data/gSSURGO.chunk.rda", package="soilDB") > "raster" %in% .packages()[1] FALSE> load(f) > gSSURGO.chunkLoading required package: raster Loading required package: sp Error: package or namespace load failed for ?raster? in .doLoadActions(where, attach): error in load action .__A__.1 for package raster: loadModule(module "spmod", what = TRUE, env = ns, loadNow = TRUE): Unable to load module "spmod": object of type 'closure' is not subsettable Error in .requirePackage(package) : unable to find required package ?raster? # but all is OK the second time around> gSSURGO.chunkclass : RasterLayer dimensions : 106, 137, 14522 (nrow, ncol, ncell) resolution : 4, 4 (x, y) The error message suggests that something goes wrong with the Rcpp module that raster is using. The module was newly introduced, and coincides with this new behavior. Do you have any idea about what I could do to avoid this? This behavior can be simply simulated by creating a new RasterLayer, saving it, and loading it in a fresh session. library(raster) x <- raster(ncol=10, nrow=10, vals=1:100) saveRDS(x, "x.rds") --- new R session --- readRDS("x.rds") readRDS("x.rds") This gives> readRDS("x.rds")Loading required package: raster Loading required package: sp Error: package or namespace load failed for ?raster? in .doLoadActions(where, attach): error in load action .__A__.1 for package raster: loadModule(module "spmod", what = TRUE, env = ns, loadNow = TRUE): Unable to load module "spmod": object of type 'closure' is not subsettable Error in .requirePackage(package) : unable to find required package ?raster?> readRDS("x.rds")class : RasterLayer dimensions : 10, 10, 100 (nrow, ncol, ncell) resolution : 36, 18 (x, y) extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 data source : in memory names : layer values : 1, 100 (min, max) Any idea about what I can do to get rid of this? Thanks, Robert Hijmans [[alternative HTML version deleted]]
Dirk Eddelbuettel
2018-Nov-03 19:07 UTC
[Rd] odd NOTE in R CMD check of data; Rcpp module related
Robert, On 3 November 2018 at 10:29, Robert J. Hijmans wrote: | With the current version of the "raster" package (that I maintain), R CMD | check on packages "soilDB" and "PopGenReport" have this NOTE: | | Package: soilDB | Check: data for non-ASCII characters | New result: NOTE | Error in .requirePackage(package) : | unable to find required package 'raster' | Calls: <Anonymous> ... .findInheritedMethods -> getClass -> getClassDef | -> .requirePackage | Execution halted [...] | Any idea about what I can do to get rid of this? Shooting a little from the hip, but based on the error and a glance at https://github.com/ncss-tech/soilDB/blob/master/DESCRIPTION you may need to import the 'methods' package. I see that https://github.com/green-striped-gecko/PopGenReport/blob/master/DESCRIPTION has it (and also a corresponding `importFrom(methods,as)`. I think I usually deploy a more global 'import(methods)'. This is needed because Rcpp Modules does some black magic on the package setup to make everything that needs to be visible effectively visible. One way to go about this is to create a minimal package using Rcpp Modules, and to then make sure you carry each setting of the minimal package over into your actual package -- that would usually involve imports and declaration. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Reasonably Related Threads
- Building source package in Windows, error in .doLoadActions()
- Disabling S4 primitive dispatch during method resolution affects namespace load actions
- Disabling S4 primitive dispatch during method resolution affects namespace load actions
- strange behavior in 'inherits' check for loaded S4 object
- Problem with legend and RasterLayer