[Rd] S4 NAMESPACE method imports and exports do not include (promoted?) generics

From: Martin Morgan <mtmorgan_at_fhcrc.org>
Date: Thu, 15 Dec 2011 15:34:52 -0800


> R.version.string

[1] "R Under development (unstable) (2011-12-15 r57901)"

section 1.6.6 of 'Writing R Extensions' says

   Note that exporting methods on a generic in the namespace will    also export the generic, and exporting a generic in the    namespace will also export its methods.


   Note that importMethodsFrom will also import any generics defined in    the namespace on those methods

However, if PkgA promotes 'unique' to a generic and exports that

   Imports: methods



and PkgB creates and exports a method on unique

   Imports: methods, PkgA

   setClass("B", representation(b="numeric"))    setMethod(unique, "B",

             function(x, incomparables=FALSE, ...) unique(x_at_b))

   importFrom(PkgA, unique)

and PkgC wants to import PkgB's classes and methods

   Imports: methods, PkgB

   cunique <- function(x) unique(x)

   importMethodsFrom(PkgB, unique)


(a) the 'unique' generic is not available to the user of PkgB

> library(PkgB)
> unique(new("B", b=1:5))

Error in unique.default(new("B", b = 1:5)) :

   unique() applies only to vectors

and (b) the generic has not been imported to PkgC's namespace

> cunique(new("B", b=1:5))

Error in unique.default(b) : unique() applies only to vectors

A workaround is for PkgB to also export(unique), and for PkgC to also importFrom(PkgA, unique), but is this the intention?

This is arising from Bioconductor efforts to place commonly promoted functions and S3 classes into a single package, to avoid conflicts when the same function is promoted independently by several packages.


Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793

R-devel_at_r-project.org mailing list
Received on Thu 15 Dec 2011 - 23:36:28 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 16 Dec 2011 - 15:00:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive