diff --git a/NAMESPACE b/NAMESPACE index c7966f414..0b9ec1b72 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -10,6 +10,7 @@ S3method(as.matrix,ev) S3method(as_tibble,mrgsims) S3method(compiled,default) S3method(compiled,mrgmod) +S3method(count,mrgsims) S3method(cvec,character) S3method(dim,ev) S3method(distinct,mrgsims) @@ -245,6 +246,7 @@ import(methods) importFrom(Rcpp,evalCpp) importFrom(dplyr,arrange) importFrom(dplyr,bind_rows) +importFrom(dplyr,count) importFrom(dplyr,distinct) importFrom(dplyr,do) importFrom(dplyr,filter) diff --git a/R/Aaaa.R b/R/Aaaa.R index 8821d8b83..07036afab 100644 --- a/R/Aaaa.R +++ b/R/Aaaa.R @@ -24,7 +24,7 @@ #' @importFrom dplyr bind_rows arrange summarise summarise_at mutate_if #' @importFrom dplyr intersect select rename do slice pull #' @importFrom dplyr if_else summarise_each is.tbl select -#' @importFrom dplyr group_by ungroup n left_join +#' @importFrom dplyr group_by ungroup n left_join count #' @importFrom tidyselect vars_select everything #' @importFrom magrittr %>% #' @importFrom tibble tibble as_tibble diff --git a/R/mrgsims.R b/R/mrgsims.R index 3ee8a0d75..330a23aca 100644 --- a/R/mrgsims.R +++ b/R/mrgsims.R @@ -173,15 +173,15 @@ pull.mrgsims <- function(.data, ...) { dplyr::pull(as_tibble.mrgsims(.data), ...) } -##' @method filter mrgsims -##' @rdname mrgsims_dplyr -##' @export +#' @method filter mrgsims +#' @rdname mrgsims_dplyr +#' @export filter.mrgsims <- function(.data,...) { dplyr::filter(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export group_by.mrgsims <- function(.data,...,add=FALSE,.add=FALSE) { if(DPLYR_1_0_0) { return(dplyr::group_by(as_tibble.mrgsims(.data), ..., .add = .add)) @@ -190,55 +190,60 @@ group_by.mrgsims <- function(.data,...,add=FALSE,.add=FALSE) { } } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export distinct.mrgsims <- function(.data,...,.keep_all=FALSE) { dplyr::distinct(as_tibble.mrgsims(.data),...,.keep_all=.keep_all) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export mutate.mrgsims <- function(.data,...) { dplyr::mutate(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export summarise.each <- function(.data,funs,...) { dplyr::summarise_each(as_tibble.mrgsims(.data),funs,...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export summarise.mrgsims <- function(.data,...) { dplyr::summarise(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export do.mrgsims <- function(.data,...,.dots) { dplyr::do(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export select.mrgsims <- function(.data,...) { dplyr::select(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export slice.mrgsims <- function(.data,...) { dplyr::slice(as_tibble.mrgsims(.data),...) } -##' @rdname mrgsims_dplyr -##' @export +#' @rdname mrgsims_dplyr +#' @export +count.mrgsims <- function(x, ...) { + dplyr::count(as_tibble.mrgsims(x), ...) +} + +#' @rdname mrgsims_dplyr +#' @export as_data_frame.mrgsims <- function(x,...) { as_tibble(as.data.frame(x),...) } - #' @param x mrgsims object. #' #' @rdname mrgsims_dplyr diff --git a/man/mrgsims_dplyr.Rd b/man/mrgsims_dplyr.Rd index cac3f29d4..1c76ef0ac 100644 --- a/man/mrgsims_dplyr.Rd +++ b/man/mrgsims_dplyr.Rd @@ -12,6 +12,7 @@ \alias{do.mrgsims} \alias{select.mrgsims} \alias{slice.mrgsims} +\alias{count.mrgsims} \alias{as_data_frame.mrgsims} \alias{as_tibble.mrgsims} \alias{as.tbl.mrgsims} @@ -37,6 +38,8 @@ \method{slice}{mrgsims}(.data, ...) +\method{count}{mrgsims}(x, ...) + as_data_frame.mrgsims(x, ...) \method{as_tibble}{mrgsims}(x, ...) diff --git a/tests/testthat/test-dplyr-generics.R b/tests/testthat/test-dplyr-generics.R index b9b5b05f5..f680eb9ca 100644 --- a/tests/testthat/test-dplyr-generics.R +++ b/tests/testthat/test-dplyr-generics.R @@ -1,4 +1,4 @@ -# Copyright (C) 2013 - 2020 Metrum Research Group +# Copyright (C) 2013 - 2024 Metrum Research Group # # This file is part of mrgsolve. # @@ -69,6 +69,11 @@ test_that("Pipe to slice", { expect_true(all(x$time %in% c(1,2.25))) }) +test_that("Pipe to count", { + x <- count(out, ID) + expect_is(x, "data.frame") +}) + test_that("filter_mrgsims", { x <- out %>% filter_sims(time > 30) expect_is(x, "mrgsims")