[R-pkg-devel] Documenting courtesy S3 methods
Lenth, Russell V
ru@@e||-|enth @end|ng |rom u|ow@@edu
Thu Aug 6 02:57:55 CEST 2020
Dear package developers,
My package offers a few methods whose generics are in other packages; for example, 'cld', for which the generic is in the 'multcomp' package. Unless the user wants to use cld() (which I don't even encourage), they do not need the multcomp package to use other features of my package. Therefore, I do not want to import and re-export multcomp::cld. Instead, on loading my package, I dynamically register the method via RegisterS3Method() if the user's system happens to have multcomp installed; and if they don't, then they can still use my package, just not the cld method. this has worked well and keeps down the number of dependencies.
The problem is documenting it. I thought I had it solved by using this roxygen2 tag:
#' @method multcomp::cld emmGrid
In turn, this tag generates these lines in the \usage section of my .Rd file:
\method{multcomp::cld}{emmGrid}(object, details = FALSE, sort = TRUE, by,
alpha = 0.05, Letters = c("1234567890", LETTERS, letters),
reversed = FALSE, ...)
and the resulting help file looks like this:
## S3 method for class 'emmGrid'
multcomp::cld(object, details = FALSE, sort = TRUE, by,
alpha = 0.05, Letters = c("1234567890", LETTERS, letters),
reversed = FALSE, ...)
This is exactly what I want. It tells the user clearly that if they want to use cld(), they have to have multcomp installed, and either name it explicitly in the call or have it in the search path.
No problems occur until I check the package, when I get this warning message:
Bad \usage lines found in documentation object 'summary.emmGrid':
<unescaped bksl>method{multcomp::cld}{emmGrid}(object, details = FALSE, sort = TRUE, by,
alpha = 0.05, Letters = c("1234567890", LETTERS, letters),
reversed = FALSE, ...)
Well I suppose this is "bad" as in unexpected; but it seems to be not bad in that it doesn't keep the help page from formatting correctly. And truly, I don't see how it could cause any harm. At lest the usage comes out correctly in both the HTML help and the PDF manual.
I can avoid the problem just by omitting "multcomp::". But then the user doesn't get such a clear message about how to use the function.
I'm interested in suggestions, but again I would regard importing multcomp::cld as an unhelpful suggestion. We ought to be able to provide courtesy methods for generics in other packages (and this is not the only one in my package) without importing a whole bunch of unneeded stuff and doubling the number of required installations.
Thanks
Russ
Russell V. Lenth - Professor Emeritus
Department of Statistics and Actuarial Science
The University of Iowa - Iowa City, IA 52242 USA
Voice (319)335-0712 (Dept. office) - FAX (319)335-3017
More information about the R-package-devel
mailing list