[Rd] exporting s3 and s4 methods

John Chambers jmc at r-project.org
Wed Mar 18 19:19:15 CET 2009


Could you send me your package code, off-list.  I think the problem may 
be related to non-exported S3 method objects.

John

Thomas Lumley wrote:
>
> I'm still having problems getting a package to define both S3 and S4 
> methods for the same new generic, on a current r-devel (version 48144).
>
> Symptoms
>> example(bigglm)
>
> bigglm> data(trees)
>
> bigglm> ff<-log(Volume)~log(Girth)+log(Height)
>
> bigglm> a <- bigglm(ff,data=trees, chunksize=10, sandwich=TRUE)
> Error in UseMethod("bigglm", data) : no applicable method for "bigglm"
>
>> showMethods("bigglm")
> Function: bigglm (package biglm)
> formula="ANY", data="ANY"
> formula="ANY", data="DBIConnection"
> formula="formula", data="data.frame"
>     (inherited from: formula="ANY", data="ANY")
>
>> bigglm          
> standardGeneric for "bigglm" defined from package "biglm"
>
> function (formula, data, family = gaussian(), ...) 
> standardGeneric("bigglm")
> <environment: 0x8554240>
> Methods may be defined for arguments: formula, data
> Use  showMethods("bigglm")  for currently available ones.
>> getMethod("bigglm",c("ANY","ANY"))
> Method Definition (Class "derivedDefaultMethod"):
>
> function (formula, data, family = gaussian(), ...) UseMethod("bigglm", 
> data)
> <environment: namespace:biglm>
>
> Signatures:
>         formula data target  "ANY"   "ANY"
> defined "ANY"   "ANY"
>
>>  methods("bigglm")
> [1] bigglm.data.frame* bigglm.function*   bigglm.RODBC*
>
>    Non-visible functions are asterisked
> Warning messages:
> 1: In findGeneric(generic.function, parent.frame()) :
>   'bigglm' is a formal generic function; S3 methods will not likely be 
> found
> 2: In methods("bigglm") : function 'bigglm' appears not to be generic
>
> In the NAMESPACE file I have
> import(stats)
> useDynLib(biglm)
> importClassesFrom(DBI)
> exportMethods(bigglm)
> export(biglm)
> export(bigglm)
> S3method(bigglm,data.frame)
> S3method(bigglm,"function")
> S3method(bigglm, RODBC)
>
> and in the code
> bigglm<-function(formula, data, family=gaussian(),...)
>     UseMethod("bigglm", data)
> setGeneric("bigglm", signature=c("formula","data"))
>
>
> bigglm.data.frame<-function(formula, data, ..., chunksize=5000){ <snip>
>
> setMethod("bigglm",
>            c("ANY","DBIConnection"),
>            function(formula, data, family = gaussian(),
>                                    tablename, ..., chunksize=5000){
>              terms<-terms(formula)
>              modelvars<-all.vars(formula)
>      <snip>
>
>
> Any suggestions?
>
>     -thomas
>
> Thomas Lumley            Assoc. Professor, Biostatistics
> tlumley at u.washington.edu    University of Washington, Seattle
>
>



More information about the R-devel mailing list