Dear R package developers
My emmeans package failed preliminary checks when I submitted an update today,
apparently due to a recent change in requirements on method registration. The
message I got was:
* checking S3 generic/method consistency ... NOTE
Apparent methods for exported generics not registered:
emm_basis.Gam emm_basis.MCMCglmm emm_basis.averaging
emm_basis.betareg emm_basis.brmsfit emm_basis.carbayes emm_basis.clm
emm_basis.clmm emm_basis.coxme emm_basis.coxph emm_basis.default
emm_basis.gam emm_basis.gamlss emm_basis.gamm emm_basis.gee
emm_basis.geeglm emm_basis.geese emm_basis.gls emm_basis.gnls
emm_basis.hurdle emm_basis.lqm emm_basis.lqmm emm_basis.mblogit
emm_basis.mcmc emm_basis.mcmc.list emm_basis.mira emm_basis.mmer
emm_basis.multinom emm_basis.nlme emm_basis.nls emm_basis.polr
emm_basis.qdrg emm_basis.rms emm_basis.rq emm_basis.rqs
emm_basis.stanreg emm_basis.survreg emm_basis.svyolr
emm_basis.zeroinfl recover_data.MCMCglmm recover_data.averaging
recover_data.betareg recover_data.brmsfit recover_data.carbayes
recover_data.clm recover_data.clmm recover_data.coxme
recover_data.coxph recover_data.default recover_data.gam
recover_data.gamlss recover_data.gamm recover_data.gee
recover_data.geeglm recover_data.geese recover_data.gls
recover_data.gnls recover_data.hurdle recover_data.lqm
recover_data.lqmm recover_data.manova recover_data.mblogit
recover_data.mcmc recover_data.mcmc.list recover_data.mira
recover_data.mmer recover_data.multinom recover_data.nlme
recover_data.nls recover_data.polr recover_data.qdrg recover_data.rms
recover_data.rq recover_data.rqs recover_data.stanreg
recover_data.survreg recover_data.svyglm recover_data.svyolr
recover_data.zeroinfl
See section 'Registering S3 methods' in the 'Writing R Extensions'
manual.
I guess my question is "why does this matter?" There are many, many functions
mentioned here, but they are all methods for emm_basis and recover_data. Both
generics are in the emmeans namespace, as are all these functions.
The section on registering S3 methods explains:
> The standard method for S3-style UseMethod dispatching might fail to locate
> methods defined in a package that is imported but not attached to the search
> path. To ensure that these methods are available the packages defining the
> methods should ensure that the generics are imported and register the methods
> using S3method directives...
But clearly all those methods flagged in the messages will be found in the same
namespace as the generics -- emm_basis and recover_data -- so not being able to
find them is not an issue. Moreover, emm_basis() and recover_data() are not
meant to be called directly by a user, or even by code in another package. They
are only meant to be called within the function emmeans::ref_grid(), and the
existence of those generics and methods is simply a mechanism for being able to
support a lot of different model classes.
Obviously, I could add a whole lot of S3method() directives to the NAMESPACE
file, but it just seems wasteful to export all those methods when they are
never needed outside the emmeans namespace.
Am I missing something?
Thanks
Russ Lenth
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel