I'm trying on my first attempt on creating an R package. I have some functions that follows below.
#' @export
overview <- function(x, ...) {
UseMethod("overview")
}
overview.query <- function(return.query, ...) {
Now when I use the devtools::load_all() (which loads all functions) everything works, and overview.query is executed when I pass an object of class query.
But rebuilding, and the UseMethod can't find the overview.query function anymore (all functions are thus not loaded), what have I done wrong?
Error message: no applicable method for 'overview' applied to an object of class "c('query', 'data.frame')"
I thought that only functions that are to be exposed to the user are to be @export'ed, and all other functions would still be visible internally to the other package functions.
When you create a generic function to apply to an S3 object, you need to export both the UseMethod statement and the function itself, as in:
#' @export
overview <- function(x, ...) {
UseMethod("overview")
}
#' @export
overview.query <- function(return.query, ...) {
which ought to eliminate the error as that method is now available to the user.
This is applicable to roxygen2 versions 3+ (currently on 5). See this answer for more info:
How to properly document S3 methods
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With