S4 changes - sp fails
On Fri, 1 Sep 2006, Prof Brian Ripley wrote:
Since writing that, I have found that there is a similar problem with testing mvoutliers (which does load sp), and it depends on exactly what has been done in what order. (I'll forward to you the exact description.)
Thanks.
I reran the interactive test:
library(sp, lib.loc="sp.Rcheck")
example("DMS-class")
which ran without problems.
.libPaths()
[1] "/home/rsb/topics/r_libs" [2] "/home/rsb/topics/Rtobe240/lib/R/library"
list.files(.libPaths()[1])
[1] "abind" "maptools" "pixmap" "RColorBrewer" "R.css" [6] "rgdal" "SparseM" "spdep" "tripack"
sessionInfo()
R version 2.4.0 Under development (unstable) (2006-08-31 r39045)
i686-pc-linux-gnu
locale:
LC_CTYPE=en_GB;LC_NUMERIC=C;LC_TIME=en_GB;LC_COLLATE=en_GB;LC_MONETARY=en_GB;LC_
MESSAGES=en_GB;LC_PAPER=en_GB;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREME
NT=en_GB;LC_IDENTIFICATION=C
attached base packages:
[1] "methods" "stats" "graphics" "grDevices" "utils" "datasets"
[7] "base"
other attached packages:
sp
"0.8-19"
I now suspect there is a protection problem in the new S4 dispatch code. Using gctorture/valgrind may help locate it.
Running check --use-gct sp now. Roger
Brian On Fri, 1 Sep 2006, Roger Bivand wrote:
On Fri, 1 Sep 2006, Prof Brian Ripley wrote:
Roger, I had managed to run R CMD check on sp successfully on r39021 and r39043 (current) in my nightly checks. (There are a couple of tests where the show/print method is not being invoked, but that is not new.) All I can suggest is to install R from scratch (make distclean), and then reinstall all relevant packages. At a guess, your interactive use and R CMD check are picking up different libraries.
Brian, I added .libPaths() and sessionInfo() to the offending example, and tried with a fresh svn checkout built in a fresh directory and installed in a fresh directory (no sp or methods in /home/rsb/topics/r_libs, which was set with export R_LIBS=):
data(state) .libPaths()
[1] "/home/rsb/topics/packages/sp-bundle/sp.Rcheck" [2] "/home/rsb/topics/r_libs" [3] "/home/rsb/topics/Rtobe240/lib/R/library"
sessionInfo()
R version 2.4.0 Under development (unstable) (2006-08-31 r39045)
i686-pc-linux-gnu
locale:
LC_CTYPE=en_GB;LC_NUMERIC=C;LC_TIME=en_GB;LC_COLLATE=en_GB;LC_MONETARY=en_GB;LC_
MESSAGES=en_GB;LC_PAPER=en_GB;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREME
NT=en_GB;LC_IDENTIFICATION=C
attached base packages:
[1] "methods" "stats" "graphics" "grDevices" "utils" "datasets"
[7] "base"
other attached packages:
sp
"0.8-19"
dd2dms(state.center$x)
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function "initialize", for
signature "integer"
Execution halted
I also tried to replicate the problem by making a new, very small, package
with just the apparently offending files:
spS4:
DESCRIPTION man/ NAMESPACE R/
spS4/man:
char2dms.Rd DMS-class.Rd
spS4/R:
AAA.R dms.R
and edited DESCRIPTION, NAMESPACE, and AAA.R to suit. In this setting
there was no problem. I'll carry on looking. None of these files has
changed between released 0.8-18 and CVS 0.8-19.
Roger
There are around a dozen S4-using packages on CRAN that are currently failing their checks: some look like newly-discovered bugs but some look like problems in S4 dispatch (even of S3 dispatch for S3 generics turned into S4 generics). More are producing apparently incorrect warnings. Brian On Thu, 31 Aug 2006, Roger Bivand wrote:
Under R version 2.4.0 (2006-08-30 r39024), sp fails CMD check following the latest changes in methods. The failures are in running examples and occur in CMD check:
data(state) dd2dms(state.center$x)
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function "initialize", for
signature "integer"
Offending code:
deg <- as(floor(dd), "integer")
After replacing by as.integer(floor(dd)), it fails on the local class
definition:
dd2dms(state.center$x)
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function "initialize", for
signature "DMS"
Installing sp, example("DMS-class") runs successfully interactively
(other examples do too).
The methods package is declared as Depends: in DESCRIPTION, and
import(methods) in NAMESPACE;
.onLoad <- function(lib, pkg) require(methods) is in the first R source
file in Collate: order.
Should the methods package be being invoked in some other way, is there a
reason why the installed package appears to run examples successfully that
fail under CMD check?
Roger
Roger Bivand Economic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 e-mail: Roger.Bivand at nhh.no