generics is designed to help package authors reduce dependencies by
providing a set of generic methods that can be imported. For example, if
a package author wanted to include a tidy method for their object,
they would have to import the broom package to do so. This would work
but would potentially increase the number of package dependencies
required to install and/or test the package.
generics is a simple, lightweight package that contains S3 generics to
be used by other packages. Some examples are:
library(generics)
#>
#> Attaching package: 'generics'
#> The following objects are masked from 'package:base':
#>
#> as.difftime, as.factor, as.ordered, intersect, is.element, setdiff,
#> setequal, union
fit
#> function(object, ...) {
#> UseMethod("fit")
#> }
#> <bytecode: 0x107df2b38>
#> <environment: namespace:generics>
tidy
#> function(x, ...) {
#> UseMethod("tidy")
#> }
#> <bytecode: 0x107e583a8>
#> <environment: namespace:generics>
To use generics with your package, we recommend that you import and
re-export the generic(s) of interest. For example, if you want to
provide a method for the S3 explain() method, you’d using the
following roxygen2 code:
As an example, the recipes
package defines a number of tidy() S3 methods by importing this
package (whereas it previously depended on broom).
Documentation
When searching for help on a method that is exported from generics by
one or more packages, using ?method will show entries for all exported
methods. If the version from generics is selected, the Methods section
dynamically lists all specific methods exported by any loaded packages.
generics
genericsis designed to help package authors reduce dependencies by providing a set of generic methods that can be imported. For example, if a package author wanted to include atidymethod for their object, they would have to import thebroompackage to do so. This would work but would potentially increase the number of package dependencies required to install and/or test the package.Installation
To install
genericsfrom CRAN, use:To install the development version, use:
Usage
genericsis a simple, lightweight package that contains S3 generics to be used by other packages. Some examples are:To use
genericswith your package, we recommend that you import and re-export the generic(s) of interest. For example, if you want to provide a method for the S3explain()method, you’d using the followingroxygen2code:As an example, the recipes package defines a number of
tidy()S3 methods by importing this package (whereas it previously depended onbroom).Documentation
When searching for help on a method that is exported from
genericsby one or more packages, using?methodwill show entries for all exported methods. If the version fromgenericsis selected, the Methods section dynamically lists all specific methods exported by any loaded packages.