diff --git a/DESCRIPTION b/DESCRIPTION index 850e20d..2405eb3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,5 +39,5 @@ Description: Download environmental measurements and sensor station metadata License: GPL (>= 2) | file LICENSE Encoding: UTF-8 LazyData: true -RoxygenNote: 6.0.1 +RoxygenNote: 6.1.0 VignetteBuilder: knitr diff --git a/NAMESPACE b/NAMESPACE index 14c7cab..235b279 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,10 +11,6 @@ S3method(plot,sensebox) S3method(print,osem_measurements) S3method(print,sensebox) S3method(summary,sensebox) -export(filter.osem_measurements) -export(filter.sensebox) -export(mutate.osem_measurements) -export(mutate.sensebox) export(osem_as_measurements) export(osem_as_sensebox) export(osem_box) @@ -24,8 +20,6 @@ export(osem_counts) export(osem_endpoint) export(osem_measurements) export(osem_phenomena) -export(st_as_sf.osem_measurements) -export(st_as_sf.sensebox) importFrom(graphics,legend) importFrom(graphics,par) importFrom(graphics,plot) diff --git a/R/box_utils.R b/R/box_utils.R index 0220b4d..0dc5f3b 100644 --- a/R/box_utils.R +++ b/R/box_utils.R @@ -87,7 +87,6 @@ osem_as_sensebox = function(x) { #' @param .dots see corresponding function in package \code{\link{dplyr}} #' @param ... other arguments #' @seealso \code{\link[dplyr]{filter}} -#' @export filter.sensebox = dplyr_class_wrapper(osem_as_sensebox) #' Add new variables to the data, while maintaining class & attributes @@ -95,7 +94,6 @@ filter.sensebox = dplyr_class_wrapper(osem_as_sensebox) #' @param .dots see corresponding function in package \code{\link{dplyr}} #' @param ... other arguments #' @seealso \code{\link[dplyr]{mutate}} -#' @export mutate.sensebox = dplyr_class_wrapper(osem_as_sensebox) # ============================================================================== @@ -116,7 +114,6 @@ mutate.sensebox = dplyr_class_wrapper(osem_as_sensebox) #' @param x The object to convert #' @param ... maybe more objects to convert #' @return The object with an st_geometry column attached. -#' @export st_as_sf.sensebox = function (x, ...) { NextMethod(x, ..., coords = c('lon', 'lat'), crs = 4326) } diff --git a/R/measurement_utils.R b/R/measurement_utils.R index 447ddf3..beba0ec 100644 --- a/R/measurement_utils.R +++ b/R/measurement_utils.R @@ -27,7 +27,6 @@ osem_as_measurements = function(x) { #' @param .dots see corresponding function in package \code{\link{dplyr}} #' @param ... other arguments #' @seealso \code{\link[dplyr]{filter}} -#' @export filter.osem_measurements = dplyr_class_wrapper(osem_as_measurements) #' Add new variables to the data, while maintaining class & attributes @@ -35,7 +34,6 @@ filter.osem_measurements = dplyr_class_wrapper(osem_as_measurements) #' @param .dots see corresponding function in package \code{\link{dplyr}} #' @param ... other arguments #' @seealso \code{\link[dplyr]{mutate}} -#' @export mutate.osem_measurements = dplyr_class_wrapper(osem_as_measurements) #' maintains class / attributes after subsetting @@ -54,7 +52,6 @@ mutate.osem_measurements = dplyr_class_wrapper(osem_as_measurements) #' @param x The object to convert #' @param ... maybe more objects to convert #' @return The object with an st_geometry column attached. -#' @export st_as_sf.osem_measurements = function (x, ...) { NextMethod(x, ..., coords = c('lon', 'lat'), crs = 4326) } diff --git a/R/tidyverse.R b/R/tidyverse.R new file mode 100644 index 0000000..947d2c0 --- /dev/null +++ b/R/tidyverse.R @@ -0,0 +1,39 @@ +# helpers for the dplyr & co related functions +# also custom method registration + +# they need to be registered, but not exported, see https://github.com/klutometis/roxygen/issues/796 +# we're using a different workaround than suggested, copied from edzer's sf package: +# dynamically register the methods only when the related package is loaded as well. + +# from: https://github.com/tidyverse/hms/blob/master/R/zzz.R +# Thu Apr 19 10:53:24 CEST 2018 +register_s3_method <- function(pkg, generic, class, fun = NULL) { + stopifnot(is.character(pkg), length(pkg) == 1) + stopifnot(is.character(generic), length(generic) == 1) + stopifnot(is.character(class), length(class) == 1) + + if (is.null(fun)) { + fun <- get(paste0(generic, ".", class), envir = parent.frame()) + } else { + stopifnot(is.function(fun)) + } + + if (pkg %in% loadedNamespaces()) { + registerS3method(generic, class, fun, envir = asNamespace(pkg)) + } + + # Always register hook in case package is later unloaded & reloaded + setHook( + packageEvent(pkg, "onLoad"), + function(...) { + registerS3method(generic, class, fun, envir = asNamespace(pkg)) + } + ) +} + +register_s3_method('dplyr', 'filter', 'sensebox') +register_s3_method('dplyr', 'mutate', 'sensebox') +register_s3_method('dplyr', 'filter', 'osem_measurements') +register_s3_method('dplyr', 'mutate', 'osem_measurements') +register_s3_method('sf', 'st_as_sf', 'sensebox') +register_s3_method('sf', 'st_as_sf', 'osem_measurements') diff --git a/man/filter.osem_measurements.Rd b/man/filter.osem_measurements.Rd index e05ea6d..ae9ecc4 100644 --- a/man/filter.osem_measurements.Rd +++ b/man/filter.osem_measurements.Rd @@ -4,7 +4,7 @@ \alias{filter.osem_measurements} \title{Return rows with matching conditions, while maintaining class & attributes} \usage{ -filter.osem_measurements(.data, ..., .dots) +\method{filter}{osem_measurements}(.data, ..., .dots) } \arguments{ \item{.data}{A osem_measurements data.frame to filter} diff --git a/man/filter.sensebox.Rd b/man/filter.sensebox.Rd index 63fb42c..1cbb6dd 100644 --- a/man/filter.sensebox.Rd +++ b/man/filter.sensebox.Rd @@ -4,7 +4,7 @@ \alias{filter.sensebox} \title{Return rows with matching conditions, while maintaining class & attributes} \usage{ -filter.sensebox(.data, ..., .dots) +\method{filter}{sensebox}(.data, ..., .dots) } \arguments{ \item{.data}{A sensebox data.frame to filter} diff --git a/man/mutate.osem_measurements.Rd b/man/mutate.osem_measurements.Rd index 6afaa3e..32e3963 100644 --- a/man/mutate.osem_measurements.Rd +++ b/man/mutate.osem_measurements.Rd @@ -4,7 +4,7 @@ \alias{mutate.osem_measurements} \title{Add new variables to the data, while maintaining class & attributes} \usage{ -mutate.osem_measurements(.data, ..., .dots) +\method{mutate}{osem_measurements}(.data, ..., .dots) } \arguments{ \item{.data}{A osem_measurements data.frame to mutate} diff --git a/man/mutate.sensebox.Rd b/man/mutate.sensebox.Rd index 4f923ad..1dabe83 100644 --- a/man/mutate.sensebox.Rd +++ b/man/mutate.sensebox.Rd @@ -4,7 +4,7 @@ \alias{mutate.sensebox} \title{Add new variables to the data, while maintaining class & attributes} \usage{ -mutate.sensebox(.data, ..., .dots) +\method{mutate}{sensebox}(.data, ..., .dots) } \arguments{ \item{.data}{A sensebox data.frame to mutate} diff --git a/man/opensensmapr.Rd b/man/opensensmapr.Rd index e8d8539..48a3066 100644 --- a/man/opensensmapr.Rd +++ b/man/opensensmapr.Rd @@ -4,7 +4,6 @@ \name{opensensmapr} \alias{opensensmapr} \alias{opensensmapr-package} -\alias{opensensmapr-package} \title{opensensmapr: Get sensor data from opensensemap.org} \description{ The opensensmapr package provides functions for diff --git a/man/osem_measurements.Rd b/man/osem_measurements.Rd index b26eec2..428c373 100644 --- a/man/osem_measurements.Rd +++ b/man/osem_measurements.Rd @@ -11,13 +11,13 @@ osem_measurements(x, ...) \method{osem_measurements}{default}(x, ...) -\method{osem_measurements}{bbox}(x, phenomenon, exposure = NA, from = NA, - to = NA, columns = NA, ..., endpoint = osem_endpoint(), progress = T, - cache = NA) +\method{osem_measurements}{bbox}(x, phenomenon, exposure = NA, + from = NA, to = NA, columns = NA, ..., + endpoint = osem_endpoint(), progress = T, cache = NA) \method{osem_measurements}{sensebox}(x, phenomenon, exposure = NA, - from = NA, to = NA, columns = NA, ..., endpoint = osem_endpoint(), - progress = T, cache = NA) + from = NA, to = NA, columns = NA, ..., + endpoint = osem_endpoint(), progress = T, cache = NA) } \arguments{ \item{x}{Depending on the method, either