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]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel