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