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@list,MoreArgs=list(...),simplify=FALSE) x@list=newlist return(x) } Thoughts? --j
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.