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

Attachment: PkgA_1.2.3.tar.gz
Description: GNU Zip compressed data

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to