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

Reply via email to