[R-pkg-devel] Conditionally register method with generic in other package

Joshua Ulrich josh.m.ulrich at gmail.com
Wed Dec 6 13:45:29 CET 2017

I have a feeling I know the answer to this question, but I'm asking
with the hope that I learn something new.

Package A defines a S3 generic function, "foo()".  Package B defines a
S3 class "bar", and a foo.bar() method.  This method is not strictly
necessary for the package to function, and package A has many

To avoid excessive dependencies, I would like to only register
foo.bar() if package A is installed at the time package B is
installed.  If package A is installed after package B, then warn the
user when package B is loaded and/or attached, so they can re-install
A and have foo.bar() registered correctly.

I could figure out a way to do this manually, but doubt it would be
CRAN-approved.  What is the recommended way to handle this situation?
I've received one suggestion to split B into 2 packages: one without
the method, and one with.  Are there other alternatives?


Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com
R/Finance 2018 | www.rinfinance.com

More information about the R-package-devel mailing list