You shouldn't have to export the S3 function: in the normal practice,
setGeneric("biglm") or just a setMethod("biglm", ....) will
cause the S3
function (like any existing function) to become the default method for
the S4 generic. There is only one object called "biglm".
It's important though to use the default, one argument, call to
setGeneric(). Otherwise the two functions are not consistent and can't
exist in the same namespace. Also, the situation is different if the S3
function is in another package, as discussed in a previous thread here
recently.
The warning messages below, if they are still current, are misleading,
and usually outright wrong. The code should look at the default method
for the S4 generic.
John
PS: if this is the biglm() in the biglm package, the current CRAN
version is not a generic of any flavor. Presumably this is a new
version? Just curious, this has no effect on the above comments.
Thomas Lumley wrote:>
> If a package defined an S3 generic and an S4 generic for the same
> function (so as to add methods for S4 classes to the existing code),
> how do I set up the namespace to have them exported?
>
> With import(stats)
> exportMethods(bigglm)
> importClassesFrom(DBI)
> useDynLib(biglm)
> export(biglm)
> export(bigglm)
> in NAMESPACE, the S3 generic is not exported.
>> methods("bigglm")
> [1] bigglm.RODBC* bigglm.data.frame* bigglm.function*
>
> 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
>
>
> [This is R 2.7.2, admittedly a little ancient]
>
> -thomas
>
> Thomas Lumley Assoc. Professor, Biostatistics
> tlumley at u.washington.edu University of Washington, Seattle
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>