[R] setMethods/setGeneric problem when R CMD CHECK'ing a package

Uwe Ligges ligges at statistik.tu-dortmund.de
Wed Aug 24 10:57:19 CEST 2011



On 24.08.2011 10:30, Jonathan Greenberg wrote:
> R-helpers:
>
> I'm trying to build a package, but I'm a bit new to the whole S3/S4
> methods concept.  I'm trying to add a new definition of the zoo
> function "as.yearmon", but I'm getting the following error when it
> gets to this point during a package install:

Thhis seesm more appropiate for the R-devel rather than the R-help list. 
Anyway, see below.


> ***
>
> R CMD INSTALL STARStools
> * installing to library
> ‘/Library/Frameworks/R.framework/Versions/2.13/Resources/library’
> WARNING: omitting pointless dependence on 'R' without a version requirement
> * installing *source* package ‘STARStools’ ...
> ** R
> ** inst
> ** preparing package for lazy loading
> Loading required package: sp
> raster version 1.9-5 (28-July-2011)
> Geospatial Data Abstraction Library extensions to R successfully loaded
> Loaded GDAL runtime: GDAL 1.8.0, released 2011/01/12
> Path to GDAL shared files:
> /Library/Frameworks/GDAL.framework/Versions/1.8/Resources/gdal
> Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009
> Path to PROJ.4 shared files: (autodetected)
>
> Attaching package: 'zoo'
>
> The following object(s) are masked from 'package:base':
>
>      as.Date
>
> Creating a new generic function for "as.Date" in "STARStools"
> Creating a new generic function for "as.list" in "STARStools"
> Error in setGeneric(f, where = where) :
>    must supply a function skeleton, explicitly or via an existing function
> Error : unable to load R code in package 'STARStools'
> ERROR: lazy loading failed for package ‘STARStools’
> * removing ‘/Library/Frameworks/R.framework/Versions/2.13/Resources/library/STARStools’
> * restoring previous
> ‘/Library/Frameworks/R.framework/Versions/2.13/Resources/library/STARStools’
>
> ***
>
> # Note that these "require" statements do not appear in the code, but
> appear in the DESCRIPTION file:
> require("sp")
> require("zoo")

??? Not valid in the DESCRIPTION file. Either use this in  your code or 
import from the corresponding Namespaces which you will have to do 
anyway for the next R release.



> # Here are the class definitions (filename AAAclassdefinitions.R):
> setClass("SpatialPointsDataFrameList",representation(list="list"),contains=c("SpatialPointsDataFrame"))
> setClass("SpatialPointsDataFrameListZoo",contains=c("SpatialPointsDataFrameList"))
>
> # And here is where it is getting hung up. filename
> "as.yearmon.SpatialPointsDataFrameListZoo_SpatialPointsDataFrameListZoo.R"
>
> setMethod("as.yearmon",
>      signature(x = "SpatialPointsDataFrameListZoo"),
> 	as.yearmon.SpatialPointsDataFrameListZoo
> )

You try to register the method pointing to a function definition that 
does not exist at this point (since you define it below). Just move the 
definition up.

Uwe Ligges


>
> # Filename "as.yearmon.SpatialPointsDataFrameListZoo.R"
> as.yearmon.SpatialPointsDataFrameListZoo=function(x,...)
> {
> 	newlist=mapply(zoo:::as.yearmon,x at list,MoreArgs=list(...),simplify=FALSE)
> 	x at list=newlist
> 	return(x)
> }
>
> Thoughts?
>
> --j
>



More information about the R-help mailing list