From mtmorgan at fhcrc.org  Wed Mar 13 20:43:59 2013
From: mtmorgan at fhcrc.org (Martin Morgan)
Date: Wed, 13 Mar 2013 12:43:59 -0700
Subject: [Rd] S4 generic not exported correctly / incorrect dispatch?
Message-ID: <5140D6FF.4020708@fhcrc.org>

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>


[Rd] S4 generic not exported correctly / incorrect dispatch?
Martin Morgan