[Rd] S4 generic not exported correctly / incorrect dispatch?
Martin Morgan
mtmorgan at fhcrc.org
Wed Mar 13 20:43:59 CET 2013
In this post
https://stat.ethz.ch/pipermail/bioc-devel/2013-March/004152.html
a package author reports that S4 dispatch fails. I can reproduce this with a
PkgA (attached; 'intervals' is a relatively light-weight CRAN package) that has
DESCRIPTION with
Depends: intervals
Imports: graphics
NAMESPACE:
importFrom(graphics, "plot")
export("plot")
exportMethods("plot")
R/tmp.R
setClass("A")
setMethod("plot", "A", function(x, y, ...) {})
and then
> library(PkgA)
Loading required package: intervals
> plot
function (x, y, ...)
UseMethod("plot")
<environment: namespace:graphics>
notice that 'plot' is reported as an S3 generic, but should be an S4 generic.
Removing Depends: intervals or changing to importsFrom(intervals, "plot")
recovers S4 export
> library(PkgA)
Loading required package: intervals
> plot
standardGeneric for "plot" defined from package "graphics"
function (x, y, ...)
standardGeneric("plot")
<environment: 0x60aea90>
Methods may be defined for arguments: x, y
Use showMethods("plot") for currently available ones.
The 'intervals' package Depends: on methods but nothing else. It defines S3 and
S4 methods on plot, creating an implicit S4 generic in the process. It's
NAMESPACE has
S3method( "plot", "Intervals" )
S3method( "plot", "Intervals_full" )
exportMethods("plot")
and we have
> library(intervals)
> plot
standardGeneric for "plot" defined from package "graphics"
function (x, y, ...)
standardGeneric("plot")
<environment: 0x68cdc78>
Methods may be defined for arguments: x, y
Use showMethods("plot") for currently available ones.
I think everyone is playing by the rules, and that plot should be reported as an
S4 generic in girafe / PkgA?
> sessionInfo()
R Under development (unstable) (2013-03-13 r62241)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] PkgA_1.2.3 intervals_0.14.0
This is also seen in
> sessionInfo()
R version 3.0.0 alpha (2013-03-13 r62244)
Platform: x86_64-unknown-linux-gnu (64-bit)
Martin
--
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M1 B861
Phone: (206) 667-2793
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PkgA_1.2.3.tar.gz
Type: application/x-gzip
Size: 729 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20130313/56aa2aff/attachment.gz>
More information about the R-devel
mailing list