From 5fa11f82426f8a2d46934d4d487a01815a14a4f7 Mon Sep 17 00:00:00 2001 From: Tim Cadman <41470917+timcadman@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:39:11 +0200 Subject: [PATCH] chore: cran changes (#70) * docs: provide a more detailed description of the package * fix: formatting * docs: editted description * docs: added return value * docs: re-written return text to be more accurate * docs: rebuilt site --- DESCRIPTION | 4 +- R/arrangeDS.R | 3 +- R/asTibbleDS.R | 3 +- R/bindColsDS.R | 3 +- R/bindRowsDS.R | 3 +- R/caseWhenDS.R | 3 +- R/distinctDS.R | 11 +- R/filterDS.R | 3 +- R/groupByDS.R | 7 +- R/groupKeysDS.R | 2 +- R/ifElseDS.R | 2 +- R/mutateDS.R | 3 +- R/renameDS.R | 4 +- R/selectDS.R | 3 +- R/sliceDS.R | 3 +- R/utils.R | 3 +- docs/404.html | 10 +- docs/CONTRIBUTING.html | 10 +- docs/authors.html | 24 ++-- docs/index.html | 16 +-- docs/news/index.html | 12 +- docs/pkgdown.yml | 7 +- docs/reference/arrangeDS.html | 25 ++--- docs/reference/asTibbleDS.html | 29 +++-- docs/reference/bindColsDS.html | 23 ++-- docs/reference/bindRowsDS.html | 23 ++-- docs/reference/caseWhenDS.html | 27 +++-- .../checkPermissivePrivacyControlLevel.html | 20 ++-- docs/reference/distinctDS.html | 28 +++-- docs/reference/filterDS.html | 27 +++-- docs/reference/groupByDS.html | 28 ++--- docs/reference/groupKeysDS.html | 22 ++-- docs/reference/ifElseDS.html | 30 ++--- docs/reference/index.html | 12 +- .../listPermittedTidyverseFunctionsDS.html | 16 ++- docs/reference/mutateDS.html | 29 +++-- docs/reference/renameDS.html | 23 ++-- docs/reference/selectDS.html | 23 ++-- docs/reference/sliceDS.html | 27 +++-- docs/reference/ungroupDS.html | 23 ++-- docs/sitemap.xml | 104 +++++------------- man/arrangeDS.Rd | 3 +- man/asTibbleDS.Rd | 3 +- man/bindColsDS.Rd | 3 +- man/bindRowsDS.Rd | 3 +- man/caseWhenDS.Rd | 3 +- man/checkPermissivePrivacyControlLevel.Rd | 3 + man/distinctDS.Rd | 9 +- man/filterDS.Rd | 3 +- man/groupByDS.Rd | 4 +- man/groupKeysDS.Rd | 2 +- man/ifElseDS.Rd | 2 +- man/mutateDS.Rd | 3 +- man/renameDS.Rd | 3 +- man/selectDS.Rd | 3 +- man/sliceDS.Rd | 3 +- man/ungroupDS.Rd | 3 +- 57 files changed, 331 insertions(+), 400 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index bafffa7..7ad3413 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: dsTidyverse Type: Package -Title: DataSHIELD Tidyverse Serverside Package +Title: 'DataSHIELD' Tidyverse Serverside Package Version: 1.0.0 Authors@R: c( @@ -22,7 +22,7 @@ Authors@R: role = c("aut")) ) Maintainer: Tim Cadman -Description: DataSHIELD serverside implementation of Tidyverse packages. +Description: This package implements selected <['Tidyverse']https://www.tidyverse.org/> functions within <['DataSHIELD']https://datashield.org/>, an open-source federated analysis solution in R. DataSHIELD currently provides limited tools for data manipulation. This package enhances the researcher experience by introducing essential functions for tasks such as subsetting, filtering, grouping, and renaming variables, improving data management capabilities within the DataSHIELD framework. License: LGPL (>= 2.1) Encoding: UTF-8 LazyData: true diff --git a/R/arrangeDS.R b/R/arrangeDS.R index 99b0159..d976c89 100644 --- a/R/arrangeDS.R +++ b/R/arrangeDS.R @@ -5,8 +5,7 @@ #' order. #' @param .by_group If TRUE, will sort first by grouping variable. Applies to grouped data frames #' only. -#' @return the object specified by the \code{newobj} argument of \code{ds.arrange} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export arrangeDS <- function(tidy_expr, df.name, .by_group) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/asTibbleDS.R b/R/asTibbleDS.R index 11eac51..a342363 100644 --- a/R/asTibbleDS.R +++ b/R/asTibbleDS.R @@ -19,8 +19,7 @@ #' into this column and the \code{row.names} attribute is deleted. No name repair is applied #' to the new column name, even if \code{x} already contains a column of that name. #' } -#' @return the object specified by the \code{newobj} argument of \code{ds.as_tibble} which is -#' written to the serverside. +#' @return A tibble. #' @export asTibbleDS <- function(tidy_expr, x, .rows, .name_repair, rownames) { other_args <- .paste_character_args(.rows, .name_repair, rownames) diff --git a/R/bindColsDS.R b/R/bindColsDS.R index 2cd2ea3..b2423c8 100644 --- a/R/bindColsDS.R +++ b/R/bindColsDS.R @@ -5,8 +5,7 @@ #' columns will be filled with NA. #' @param .name_repair One of "unique", "universal", or "check_unique". See #' \code{vctrs::vec_as_names()} for the meaning of these options. -#' @return A serverside data frame with name specified in \code{newobj} and the same type as the -#' first element of \code{to_combine}. +#' @return A data frame the same type as the first element of \code{to_combine} #' @export bindColsDS <- function(to_combine = NULL, .name_repair = NULL) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/bindRowsDS.R b/R/bindRowsDS.R index 9b0a258..0c8b41f 100644 --- a/R/bindRowsDS.R +++ b/R/bindRowsDS.R @@ -6,8 +6,7 @@ #' @param .id he name of an optional identifier column. Provide a string to create an output column #' that identifies each input. The column will use names if available, otherwise it will use #' positions. -#' @return A serverside data frame with name specified in \code{newobj} and the same type as the -#' first element of \code{to_combine}. +#' @return A data frame the same type as the first element of \code{to_combine} #' @export bindRowsDS <- function(to_combine = NULL, .id = NULL) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/caseWhenDS.R b/R/caseWhenDS.R index dc524a9..50b4cde 100644 --- a/R/caseWhenDS.R +++ b/R/caseWhenDS.R @@ -11,8 +11,7 @@ #' @param .default The value used when all of the LHS inputs return either FALSE or NA. #' @param .ptype An optional prototype declaring the desired output type. If supplied, this overrides the common type of true, false, and missing. #' @param .size An optional size declaring the desired output size. If supplied, this overrides the size of condition. -#' @return the object specified by the \code{newobj} argument of \code{ds.case_when} which is -#' written to the serverside. +#' @return A vector with the same size as the common size computed from the inputs in \code{tidy_expr} and the same type as the common type of the RHS inputs in \code{tidy_expr}. #' @export caseWhenDS <- function(tidy_expr = NULL, .default = NULL, .ptype = NULL, .size = NULL) { checkPermissivePrivacyControlLevel(c('permissive', 'banana', 'avacado')) diff --git a/R/distinctDS.R b/R/distinctDS.R index 105f7a5..8a2347e 100644 --- a/R/distinctDS.R +++ b/R/distinctDS.R @@ -3,17 +3,18 @@ #' @param tidy_expr Optional variables to use when determining uniqueness. If there are multiple rows for #' a given combination of inputs, only the first row will be preserved. If omitted, will use all #' variables in the data frame. -#' @param .data A data frame, data frame extension (e.g. a tibble), or a lazy data frame +#' @param df.name A data frame, data frame extension (e.g. a tibble), or a lazy data frame #' (e.g. from dbplyr or dtplyr). -#' @param .keep_all If TRUE, keep all variables in .data. If a combination of expr is not distinct, +#' @param .keep_all If TRUE, keep all variables in df.name If a combination of expr is not distinct, #' this keeps the first row of values. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export -distinctDS <- function(tidy_expr, .data, .keep_all) { +distinctDS <- function(tidy_expr, df.name, .keep_all) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) tidy_expr <- .decode_tidy_eval(tidy_expr, .get_encode_dictionary()) other_args <- .paste_character_args(.keep_all) - call <- .make_tidyverse_call(.data, "distinct", tidy_expr, other_args) + call <- .make_tidyverse_call(df.name, "distinct", tidy_expr, other_args) out <- .execute_with_error_handling("distinct", call) - .check_subset_disclosure_risk(eval(parse(text = .data)), out) + .check_subset_disclosure_risk(eval(parse(text = df.name)), out) return(out) } diff --git a/R/filterDS.R b/R/filterDS.R index 68ddb88..6a1e16c 100644 --- a/R/filterDS.R +++ b/R/filterDS.R @@ -8,8 +8,7 @@ #' an alternative to \code{group_by}. #' @param .preserve Relevant when the df.name input is grouped. If .preserve = FALSE (the default), #' the grouping structure is recalculated based on the resulting data, otherwise the grouping is kept as is. -#' @return the object specified by the \code{newobj} argument of \code{ds.filter} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export filterDS <- function(tidy_expr, df.name, .by, .preserve) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/groupByDS.R b/R/groupByDS.R index 51ea46a..cf32f49 100644 --- a/R/groupByDS.R +++ b/R/groupByDS.R @@ -7,8 +7,8 @@ #' the existing groups, use .add = TRUE. #' @param .drop Drop groups formed by factor levels that don't appear in the data? The default is #' TRUE except when df.name has been previously grouped with .drop = FALSE. -#' @return the object specified by the \code{newobj} argument of \code{ds.group_by} which is written -#' to the serverside. +#' @return A grouped data frame with class grouped_df, unless the combination of \code{tidy_expr} +#' and \code{.add} yields a empty set of grouping columns, in which case a tibble will be returned. #' @export groupByDS <- function(tidy_expr, df.name, .add, .drop) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) @@ -24,8 +24,7 @@ groupByDS <- function(tidy_expr, df.name, .add, .drop) { #' @description DataSHIELD implentation of \code{dplyr::ungroup}. #' @param tidy_expr Unused in this function. #' @param x A tibble. -#' @return the object specified by the \code{newobj} argument of \code{ds.ungroup} which is written -#' to the serverside. +#' @return An ungrouped data frame or tibble. #' @export ungroupDS <- function(tidy_expr, x) { .check_data_name_length(x, listDisclosureSettingsDS()) diff --git a/R/groupKeysDS.R b/R/groupKeysDS.R index 9c834bd..44c69b3 100644 --- a/R/groupKeysDS.R +++ b/R/groupKeysDS.R @@ -2,7 +2,7 @@ #' @description DataSHIELD implentation of \code{dplyr::group_keys} #' @param tidy_select Unused in this function. #' @param x a grouped tibble. -#' @return A tibble describing the groups is returned to the client. +#' @return A data frame describing the groups. #' @export groupKeysDS <- function(tidy_select, x) { dsBase::checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/ifElseDS.R b/R/ifElseDS.R index c169229..832b92c 100644 --- a/R/ifElseDS.R +++ b/R/ifElseDS.R @@ -6,7 +6,7 @@ #' @param missing If not NULL, will be used as the value for NA values of condition. Follows the same size and type rules as true and false. #' @param ptype An optional prototype declaring the desired output type. If supplied, this overrides the common type of true, false, and missing. #' @param size An optional size declaring the desired output size. If supplied, this overrides the size of condition. -#' @return the object specified by the \code{newobj} argument of \code{ds.if_else} which is written to the serverside. +#' @return A vector with the same size as \code{condition} and the same type as the common type of \code{true}, \code{false}, and \code{missing}. #' @export ifElseDS <- function(condition = NULL, true = NULL, false = NULL, missing = NULL, ptype = NULL, size = NULL) { diff --git a/R/mutateDS.R b/R/mutateDS.R index 235721d..25933f5 100644 --- a/R/mutateDS.R +++ b/R/mutateDS.R @@ -15,8 +15,7 @@ #' to add to the right hand side). See \code{relocate} for more details. #' @param .after Optionally, control where new columns should appear (the default is #' to add to the right hand side). See \code{relocate} for more details. -#' @return the object specified by the \code{newobj} argument of \code{ds.mutate} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export mutateDS <- function(tidy_expr, df.name, .keep = NULL, .before = NULL, .after = NULL) { checkPermissivePrivacyControlLevel(c('permissive', 'banana', 'avacado')) diff --git a/R/renameDS.R b/R/renameDS.R index 22e1520..7909d37 100644 --- a/R/renameDS.R +++ b/R/renameDS.R @@ -2,10 +2,8 @@ #' @description DataSHIELD implentation of\code{dplyr::rename}. #' @param df.name A data frame or tibble. #' @param tidy_expr list containing diffused expression. -#' @return the object specified by the \code{newobj} argument of \code{ds.rename} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export -#' renameDS <- function(tidy_expr, df.name) { tidy_expr <- .decode_tidy_eval(tidy_expr, .get_encode_dictionary()) .check_tidy_disclosure(df.name, tidy_expr) diff --git a/R/selectDS.R b/R/selectDS.R index d6cf9b2..9ed539b 100644 --- a/R/selectDS.R +++ b/R/selectDS.R @@ -3,8 +3,7 @@ #' @details Performs dplyr select #' @param df.name A data frame or tibble. #' @param tidy_expr One or more unquoted expressions separated by commas. -#' @return the object specified by the \code{newobj} argument of \code{ds.select} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export selectDS <- function(tidy_expr, df.name) { tidy_expr <- .decode_tidy_eval(tidy_expr, .get_encode_dictionary()) diff --git a/R/sliceDS.R b/R/sliceDS.R index 8686442..d70ff3a 100644 --- a/R/sliceDS.R +++ b/R/sliceDS.R @@ -10,8 +10,7 @@ #' @param .preserve Relevant when the df.name input is grouped. If .preserve = FALSE (the default), #' the grouping structure is recalculated based on the resulting data, otherwise the grouping is #' kept as is. -#' @return the object specified by the \code{newobj} argument of \code{ds.slice} which is written -#' to the serverside. +#' @return An object of the same type as \code{df.name}, typically a data frame or tibble. #' @export sliceDS <- function(tidy_expr, df.name, .by, .preserve) { checkPermissivePrivacyControlLevel(c('permissive', 'banana')) diff --git a/R/utils.R b/R/utils.R index b1dfc3f..2948a84 100644 --- a/R/utils.R +++ b/R/utils.R @@ -450,10 +450,9 @@ listPermittedTidyverseFunctionsDS <- function() { #' @param privacyControlLevels is a vector of strings which contains the privacy control level names which are permitted by the calling method. #' @importFrom cli cli_abort #' @author Wheater, Dr SM., DataSHIELD Team. +#' @return Returns an error if the method is not permitted; otherwise, no value is returned. #' @export -#' checkPermissivePrivacyControlLevel <- function(privacyControlLevels){ - disclosureSettings <- listDisclosureSettingsDS() if (is.null(disclosureSettings) || is.null(disclosureSettings$datashield.privacyControlLevel) || (! any(disclosureSettings$datashield.privacyControlLevel %in% privacyControlLevels))) { diff --git a/docs/404.html b/docs/404.html index 5aa2d8b..e65fc93 100644 --- a/docs/404.html +++ b/docs/404.html @@ -18,7 +18,7 @@ - +
- +
@@ -81,16 +81,16 @@

Page not found (404)

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/CONTRIBUTING.html b/docs/CONTRIBUTING.html index 45430a2..e27467e 100644 --- a/docs/CONTRIBUTING.html +++ b/docs/CONTRIBUTING.html @@ -3,7 +3,7 @@ - +
- +
@@ -77,15 +77,15 @@

Branch name -

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/authors.html b/docs/authors.html index 48abafa..2ad29ce 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -3,7 +3,7 @@ - +
- +
@@ -41,7 +41,7 @@

Authors and Citation

- +
  • Tim Cadman. Author, maintainer.

    @@ -51,28 +51,28 @@

    Authors and Citation

  • -

    Stuart Wheater. Author. +

    Stuart Wheater. Author.

  • -

    Demetris Avraam. Author. +

    Demetris Avraam. Author.

Citation

- +

Cadman T, Slofstra M, Wheater S, Avraam D (2024). -dsTidyverse: DataSHIELD Tidyverse Serverside Package. -R package version 1.0.0. +dsTidyverse: 'DataSHIELD' Tidyverse Serverside Package. +R package version 1.0.0.

@Manual{,
-  title = {dsTidyverse: DataSHIELD Tidyverse Serverside Package},
+  title = {dsTidyverse: 'DataSHIELD' Tidyverse Serverside Package},
   author = {Tim Cadman and Mariska Slofstra and Stuart Wheater and Demetris Avraam},
   year = {2024},
   note = {R package version 1.0.0},
@@ -89,15 +89,15 @@ 

Citation

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/index.html b/docs/index.html index 3fe18e2..7ae8ace 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,14 +12,14 @@ - + - +
- +
@@ -162,8 +162,8 @@

Developers

Dev status

    -
  • CircleCI
  • -
  • codecov
  • +
  • CircleCI
  • +
  • codecov
@@ -178,16 +178,16 @@

Dev status

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/news/index.html b/docs/news/index.html index 0839ab3..1713e7e 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -3,7 +3,7 @@ - +
- +
@@ -60,15 +60,15 @@
- - + + diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index b0e03d7..90b007a 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,6 +1,5 @@ -pandoc: 3.1.1 -pkgdown: 2.0.9 +pandoc: '3.2' +pkgdown: 2.1.1 pkgdown_sha: ~ articles: {} -last_built: 2024-10-11T09:17Z - +last_built: 2024-10-17T09:10Z diff --git a/docs/reference/arrangeDS.html b/docs/reference/arrangeDS.html index fd0c801..ce875a9 100644 --- a/docs/reference/arrangeDS.html +++ b/docs/reference/arrangeDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,26 +52,25 @@

Order the rows of a data frame by the values of selected columns

Arguments

-
tidy_expr
+ + +
tidy_expr

Variables, or functions of variables. Use desc() to sort a variable in descending order.

-
df.name
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.by_group
+
.by_group

If TRUE, will sort first by grouping variable. Applies to grouped data frames only.

Value

- - -

the object specified by the newobj argument of ds.arrange which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

@@ -86,15 +85,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/asTibbleDS.html b/docs/reference/asTibbleDS.html index 27a855b..9868574 100644 --- a/docs/reference/asTibbleDS.html +++ b/docs/reference/asTibbleDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,20 +52,22 @@

Coerce a data frame or matrix to a tibble

Arguments

-
tidy_expr
+ + +
tidy_expr

Unused in present function.

-
x
+
x

A data frame or matrix.

-
.rows
+
.rows

The number of rows, useful to create a 0-column tibble or just as an additional check.

-
.name_repair
+
.name_repair

Treatment of problematic column names:

  • "minimal": No name repair or checks, beyond basic existence.

  • "unique": Make sure names are unique and not empty.

  • "check_unique": (default value), no name repair, but check they are unique.

  • @@ -73,7 +75,7 @@

    Arguments

-
rownames
+
rownames

How to treat existing row names of a data frame or matrix:

  • `NULL`: remove row names. This is the default.

  • `NA`: keep row names.

  • A string: the name of a new column. Existing rownames are transferred @@ -84,10 +86,7 @@

    Arguments

Value

- - -

the object specified by the newobj argument of ds.as_tibble which is -written to the serverside.

+

A tibble.

@@ -102,15 +101,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/bindColsDS.html b/docs/reference/bindColsDS.html index 6c1ee12..a078329 100644 --- a/docs/reference/bindColsDS.html +++ b/docs/reference/bindColsDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,23 +52,22 @@

Bind multiple data frames by column

Arguments

-
to_combine
+ + +
to_combine

Data frames to combine. Each argument can either be a data frame, a list that could be a data frame, or a list of data frames. Columns are matched by name, and any missing columns will be filled with NA.

-
.name_repair
+
.name_repair

One of "unique", "universal", or "check_unique". See vctrs::vec_as_names() for the meaning of these options.

Value

- - -

A serverside data frame with name specified in newobj and the same type as the -first element of to_combine.

+

A data frame the same type as the first element of to_combine

@@ -83,15 +82,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/bindRowsDS.html b/docs/reference/bindRowsDS.html index 958948b..8a68ff7 100644 --- a/docs/reference/bindRowsDS.html +++ b/docs/reference/bindRowsDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,13 +52,15 @@

Bind multiple data frames by row.

Arguments

-
to_combine
+ + +
to_combine

Data frames to combine. Each argument can either be a data frame, a list that could be a data frame, or a list of data frames. Columns are matched by name, and any missing columns will be filled with NA.

-
.id
+
.id

he name of an optional identifier column. Provide a string to create an output column that identifies each input. The column will use names if available, otherwise it will use positions.

@@ -66,10 +68,7 @@

Arguments

Value

- - -

A serverside data frame with name specified in newobj and the same type as the -first element of to_combine.

+

A data frame the same type as the first element of to_combine

@@ -84,15 +83,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/caseWhenDS.html b/docs/reference/caseWhenDS.html index 27b1639..c74bf67 100644 --- a/docs/reference/caseWhenDS.html +++ b/docs/reference/caseWhenDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,7 +52,9 @@

Performs dplyr case_when

Arguments

-
tidy_expr
+ + +
tidy_expr

A sequence of two-sided formulas. The left hand side (LHS) determines which values match this case. The right hand side (RHS) provides the replacement value. The LHS inputs must evaluate to logical vectors. @@ -63,24 +65,21 @@

Arguments

NULL inputs are ignored.

-
.default
+
.default

The value used when all of the LHS inputs return either FALSE or NA.

-
.ptype
+
.ptype

An optional prototype declaring the desired output type. If supplied, this overrides the common type of true, false, and missing.

-
.size
+
.size

An optional size declaring the desired output size. If supplied, this overrides the size of condition.

Value

- - -

the object specified by the newobj argument of ds.case_when which is -written to the serverside.

+

A vector with the same size as the common size computed from the inputs in tidy_expr and the same type as the common type of the RHS inputs in tidy_expr.

@@ -95,15 +94,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/checkPermissivePrivacyControlLevel.html b/docs/reference/checkPermissivePrivacyControlLevel.html index f361caa..da5aa76 100644 --- a/docs/reference/checkPermissivePrivacyControlLevel.html +++ b/docs/reference/checkPermissivePrivacyControlLevel.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,10 +52,16 @@

checkPermissivePrivacyControlLevel

Arguments

-
privacyControlLevels
+ + +
privacyControlLevels

is a vector of strings which contains the privacy control level names which are permitted by the calling method.

+
+

Value

+

Returns an error if the method is not permitted; otherwise, no value is returned.

+

Details

Tests whether the R option "datashield.privacyControlLevel" is set to "permissive", if it isn't @@ -79,15 +85,15 @@

Author

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/distinctDS.html b/docs/reference/distinctDS.html index c7fe801..effcaad 100644 --- a/docs/reference/distinctDS.html +++ b/docs/reference/distinctDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -47,27 +47,33 @@

Keep distinct/unique rows

-
distinctDS(tidy_expr, .data, .keep_all)
+
distinctDS(tidy_expr, df.name, .keep_all)

Arguments

-
tidy_expr
+ + +
tidy_expr

Optional variables to use when determining uniqueness. If there are multiple rows for a given combination of inputs, only the first row will be preserved. If omitted, will use all variables in the data frame.

-
.data
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.keep_all
-

If TRUE, keep all variables in .data. If a combination of expr is not distinct, +

.keep_all
+

If TRUE, keep all variables in df.name If a combination of expr is not distinct, this keeps the first row of values.

+
+

Value

+

An object of the same type as df.name, typically a data frame or tibble.

+
-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/filterDS.html b/docs/reference/filterDS.html index 753e92b..1b4f5a4 100644 --- a/docs/reference/filterDS.html +++ b/docs/reference/filterDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,32 +52,31 @@

Performs dplyr filter

Arguments

-
tidy_expr
+ + +
tidy_expr

Diffused expression that return a logical value, and are defined in terms of the variables in df.name.

-
df.name
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.by
+
.by

Optionally, a selection of columns to group by for just this operation, functioning as an alternative to group_by.

-
.preserve
+
.preserve

Relevant when the df.name input is grouped. If .preserve = FALSE (the default), the grouping structure is recalculated based on the resulting data, otherwise the grouping is kept as is.

Value

- - -

the object specified by the newobj argument of ds.filter which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

@@ -92,15 +91,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/groupByDS.html b/docs/reference/groupByDS.html index e110594..5060c10 100644 --- a/docs/reference/groupByDS.html +++ b/docs/reference/groupByDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,31 +52,31 @@

Group by one or more variables

Arguments

-
tidy_expr
+ + +
tidy_expr

Diffused grouping expression.

-
df.name
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.add
+
.add

When FALSE, the default, group_by() will override existing groups. To add to the existing groups, use .add = TRUE.

-
.drop
+
.drop

Drop groups formed by factor levels that don't appear in the data? The default is TRUE except when df.name has been previously grouped with .drop = FALSE.

Value

- - -

the object specified by the newobj argument of ds.group_by which is written -to the serverside.

+

A grouped data frame with class grouped_df, unless the combination of tidy_expr +and .add yields a empty set of grouping columns, in which case a tibble will be returned.

@@ -91,15 +91,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/groupKeysDS.html b/docs/reference/groupKeysDS.html index 5e41dc5..4277e30 100644 --- a/docs/reference/groupKeysDS.html +++ b/docs/reference/groupKeysDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,19 +52,19 @@

Performs dplyr group_keys.

Arguments

-
tidy_select
+ + +
tidy_select

Unused in this function.

-
x
+
x

a grouped tibble.

Value

- - -

A tibble describing the groups is returned to the client.

+

A data frame describing the groups.

@@ -79,15 +79,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/ifElseDS.html b/docs/reference/ifElseDS.html index 719450d..4bf470c 100644 --- a/docs/reference/ifElseDS.html +++ b/docs/reference/ifElseDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -59,35 +59,35 @@

Vectorised if-else

Arguments

-
condition
+ + +
condition

A list, specifying a logical vector in tidyverse syntax, ie data and column names unquoted.

-
true
+
true

Vector to use for TRUE value of condition.

-
false
+
false

Vector to use for FALSE value of condition.

-
missing
+
missing

If not NULL, will be used as the value for NA values of condition. Follows the same size and type rules as true and false.

-
ptype
+
ptype

An optional prototype declaring the desired output type. If supplied, this overrides the common type of true, false, and missing.

-
size
+
size

An optional size declaring the desired output size. If supplied, this overrides the size of condition.

Value

- - -

the object specified by the newobj argument of ds.if_else which is written to the serverside.

+

A vector with the same size as condition and the same type as the common type of true, false, and missing.

@@ -102,15 +102,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/index.html b/docs/reference/index.html index 4f88ea0..0c515e0 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -1,9 +1,9 @@ -Function reference • dsTidyversePackage index • dsTidyverse - +
- +
@@ -125,15 +125,15 @@

All functions
-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/listPermittedTidyverseFunctionsDS.html b/docs/reference/listPermittedTidyverseFunctionsDS.html index 1e96bd9..3cdd3fa 100644 --- a/docs/reference/listPermittedTidyverseFunctionsDS.html +++ b/docs/reference/listPermittedTidyverseFunctionsDS.html @@ -4,7 +4,7 @@ - +
- +
@@ -54,9 +54,7 @@

List of Permitted Tidyverse Functions

Value

- - -

A character vector of function names, each representing a permitted function. Functions +

A character vector of function names, each representing a permitted function. Functions not included in this list will be blocked.

@@ -72,15 +70,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/mutateDS.html b/docs/reference/mutateDS.html index 82b28ea..dac90a3 100644 --- a/docs/reference/mutateDS.html +++ b/docs/reference/mutateDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,15 +52,17 @@

Create, modify, and delete columns

Arguments

-
tidy_expr
+ + +
tidy_expr

Name-value pairs. The name gives the name of the column in the output.

-
df.name
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.keep
+
.keep

.keep Control which columns from df.name are retained in the output. Grouping columns and columns created by tidy_expr are always kept.

  • "all": Retains all columns from df.name. This is the default.

  • "used": Retains only the columns used in tidy_expr to create new columns.

  • @@ -69,22 +71,19 @@

    Arguments

Grouping columns and columns created by tidy_expr are always kept.

-
.before
+
.before

<tidy-select> Optionally, control where new columns should appear (the default is to add to the right hand side). See relocate for more details.

-
.after
+
.after

<tidy-select> Optionally, control where new columns should appear (the default is to add to the right hand side). See relocate for more details.

Value

- - -

the object specified by the newobj argument of ds.mutate which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

@@ -99,15 +98,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/renameDS.html b/docs/reference/renameDS.html index c73448c..8f0e807 100644 --- a/docs/reference/renameDS.html +++ b/docs/reference/renameDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,20 +52,19 @@

Rename columns

Arguments

-
tidy_expr
+ + +
tidy_expr

list containing diffused expression.

-
df.name
+
df.name

A data frame or tibble.

Value

- - -

the object specified by the newobj argument of ds.rename which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

@@ -80,15 +79,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/selectDS.html b/docs/reference/selectDS.html index 3dc1fa2..004c04d 100644 --- a/docs/reference/selectDS.html +++ b/docs/reference/selectDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,20 +52,19 @@

Keep or drop columns using their names and types

Arguments

-
tidy_expr
+ + +
tidy_expr

One or more unquoted expressions separated by commas.

-
df.name
+
df.name

A data frame or tibble.

Value

- - -

the object specified by the newobj argument of ds.select which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

Details

@@ -84,15 +83,15 @@

Details

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/sliceDS.html b/docs/reference/sliceDS.html index 13ac4f6..990ded0 100644 --- a/docs/reference/sliceDS.html +++ b/docs/reference/sliceDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,23 +52,25 @@

Subset rows using their positions

Arguments

-
tidy_expr
+ + +
tidy_expr

Provide either positive values to keep, or negative values to drop. The values provided must be either all positive or all negative. Indices beyond the number of rows in the input are silently ignored.

-
df.name
+
df.name

A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).

-
.by
+
.by

Optionally, a selection of columns to group by for just this operation, functioning as an alternative to group_by.

-
.preserve
+
.preserve

Relevant when the df.name input is grouped. If .preserve = FALSE (the default), the grouping structure is recalculated based on the resulting data, otherwise the grouping is kept as is.

@@ -76,10 +78,7 @@

Arguments

Value

- - -

the object specified by the newobj argument of ds.slice which is written -to the serverside.

+

An object of the same type as df.name, typically a data frame or tibble.

@@ -94,15 +93,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/reference/ungroupDS.html b/docs/reference/ungroupDS.html index dfa5116..10af281 100644 --- a/docs/reference/ungroupDS.html +++ b/docs/reference/ungroupDS.html @@ -3,7 +3,7 @@ - +
- +
@@ -52,20 +52,19 @@

Remove grouping from a tibble or data frame

Arguments

-
tidy_expr
+ + +
tidy_expr

Unused in this function.

-
x
+
x

A tibble.

Value

- - -

the object specified by the newobj argument of ds.ungroup which is written -to the serverside.

+

An ungrouped data frame or tibble.

@@ -80,15 +79,15 @@

Value

-

Site built with pkgdown 2.0.9.

+

Site built with pkgdown 2.1.1.

- - + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 3374999..aac90f3 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1,78 +1,28 @@ - - - - /404.html - - - /CONTRIBUTING.html - - - /authors.html - - - /index.html - - - /news/index.html - - - /reference/arrangeDS.html - - - /reference/asTibbleDS.html - - - /reference/bindColsDS.html - - - /reference/bindRowsDS.html - - - /reference/caseWhenDS.html - - - /reference/case_whenDS.html - - - /reference/checkPermissivePrivacyControlLevel.html - - - /reference/distinctDS.html - - - /reference/dsListDisclosureSettingsTidyVerse.html - - - /reference/filterDS.html - - - /reference/groupByDS.html - - - /reference/groupKeysDS.html - - - /reference/ifElseDS.html - - - /reference/index.html - - - /reference/listPermittedTidyverseFunctionsDS.html - - - /reference/mutateDS.html - - - /reference/renameDS.html - - - /reference/selectDS.html - - - /reference/sliceDS.html - - - /reference/ungroupDS.html - + +/404.html +/CONTRIBUTING.html +/authors.html +/index.html +/news/index.html +/reference/arrangeDS.html +/reference/asTibbleDS.html +/reference/bindColsDS.html +/reference/bindRowsDS.html +/reference/caseWhenDS.html +/reference/case_whenDS.html +/reference/checkPermissivePrivacyControlLevel.html +/reference/distinctDS.html +/reference/dsListDisclosureSettingsTidyVerse.html +/reference/filterDS.html +/reference/groupByDS.html +/reference/groupKeysDS.html +/reference/ifElseDS.html +/reference/index.html +/reference/listPermittedTidyverseFunctionsDS.html +/reference/mutateDS.html +/reference/renameDS.html +/reference/selectDS.html +/reference/sliceDS.html +/reference/ungroupDS.html + diff --git a/man/arrangeDS.Rd b/man/arrangeDS.Rd index dfebced..5524815 100644 --- a/man/arrangeDS.Rd +++ b/man/arrangeDS.Rd @@ -16,8 +16,7 @@ order.} only.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.arrange} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of \code{dplyr::arrange}. diff --git a/man/asTibbleDS.Rd b/man/asTibbleDS.Rd index e6e8dfb..2375876 100644 --- a/man/asTibbleDS.Rd +++ b/man/asTibbleDS.Rd @@ -32,8 +32,7 @@ check.} }} } \value{ -the object specified by the \code{newobj} argument of \code{ds.as_tibble} which is -written to the serverside. +A tibble. } \description{ DataSHIELD implementation of \code{tibble::as_tibble}. Currently only implemented for data frames and matrices. diff --git a/man/bindColsDS.Rd b/man/bindColsDS.Rd index 5f4547f..4b65969 100644 --- a/man/bindColsDS.Rd +++ b/man/bindColsDS.Rd @@ -15,8 +15,7 @@ columns will be filled with NA.} \code{vctrs::vec_as_names()} for the meaning of these options.} } \value{ -A serverside data frame with name specified in \code{newobj} and the same type as the -first element of \code{to_combine}. +A data frame the same type as the first element of \code{to_combine} } \description{ DataSHIELD implementation of \code{dplyr::bind_cols}. diff --git a/man/bindRowsDS.Rd b/man/bindRowsDS.Rd index d5934a7..f8a3906 100644 --- a/man/bindRowsDS.Rd +++ b/man/bindRowsDS.Rd @@ -16,8 +16,7 @@ that identifies each input. The column will use names if available, otherwise it positions.} } \value{ -A serverside data frame with name specified in \code{newobj} and the same type as the -first element of \code{to_combine}. +A data frame the same type as the first element of \code{to_combine} } \description{ DataSHIELD implementation of \code{dplyr::bind_rows}. diff --git a/man/caseWhenDS.Rd b/man/caseWhenDS.Rd index b801698..d2964e3 100644 --- a/man/caseWhenDS.Rd +++ b/man/caseWhenDS.Rd @@ -23,8 +23,7 @@ NULL inputs are ignored.} \item{.size}{An optional size declaring the desired output size. If supplied, this overrides the size of condition.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.case_when} which is -written to the serverside. +A vector with the same size as the common size computed from the inputs in \code{tidy_expr} and the same type as the common type of the RHS inputs in \code{tidy_expr}. } \description{ DataSHIELD implentation of \code{dplyr::case_when}. diff --git a/man/checkPermissivePrivacyControlLevel.Rd b/man/checkPermissivePrivacyControlLevel.Rd index 9cb377f..09fbb23 100644 --- a/man/checkPermissivePrivacyControlLevel.Rd +++ b/man/checkPermissivePrivacyControlLevel.Rd @@ -9,6 +9,9 @@ checkPermissivePrivacyControlLevel(privacyControlLevels) \arguments{ \item{privacyControlLevels}{is a vector of strings which contains the privacy control level names which are permitted by the calling method.} } +\value{ +Returns an error if the method is not permitted; otherwise, no value is returned. +} \description{ This serverside function check that the server is running in "permissive" privacy control level. } diff --git a/man/distinctDS.Rd b/man/distinctDS.Rd index 55ef596..acb5eed 100644 --- a/man/distinctDS.Rd +++ b/man/distinctDS.Rd @@ -4,19 +4,22 @@ \alias{distinctDS} \title{Keep distinct/unique rows} \usage{ -distinctDS(tidy_expr, .data, .keep_all) +distinctDS(tidy_expr, df.name, .keep_all) } \arguments{ \item{tidy_expr}{Optional variables to use when determining uniqueness. If there are multiple rows for a given combination of inputs, only the first row will be preserved. If omitted, will use all variables in the data frame.} -\item{.data}{A data frame, data frame extension (e.g. a tibble), or a lazy data frame +\item{df.name}{A data frame, data frame extension (e.g. a tibble), or a lazy data frame (e.g. from dbplyr or dtplyr).} -\item{.keep_all}{If TRUE, keep all variables in .data. If a combination of expr is not distinct, +\item{.keep_all}{If TRUE, keep all variables in df.name If a combination of expr is not distinct, this keeps the first row of values.} } +\value{ +An object of the same type as \code{df.name}, typically a data frame or tibble. +} \description{ DataSHIELD implentation of \code{dplyr::distinct}. } diff --git a/man/filterDS.Rd b/man/filterDS.Rd index 7d170b8..b75c31a 100644 --- a/man/filterDS.Rd +++ b/man/filterDS.Rd @@ -20,8 +20,7 @@ an alternative to \code{group_by}.} the grouping structure is recalculated based on the resulting data, otherwise the grouping is kept as is.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.filter} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of \code{dplyr::filter}. diff --git a/man/groupByDS.Rd b/man/groupByDS.Rd index 2ab0309..9791e42 100644 --- a/man/groupByDS.Rd +++ b/man/groupByDS.Rd @@ -19,8 +19,8 @@ the existing groups, use .add = TRUE.} TRUE except when df.name has been previously grouped with .drop = FALSE.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.group_by} which is written -to the serverside. +A grouped data frame with class grouped_df, unless the combination of \code{tidy_expr} +and \code{.add} yields a empty set of grouping columns, in which case a tibble will be returned. } \description{ DataSHIELD implentation of \code{dplyr::group_by}. diff --git a/man/groupKeysDS.Rd b/man/groupKeysDS.Rd index 2b36569..a7a230a 100644 --- a/man/groupKeysDS.Rd +++ b/man/groupKeysDS.Rd @@ -12,7 +12,7 @@ groupKeysDS(tidy_select, x) \item{x}{a grouped tibble.} } \value{ -A tibble describing the groups is returned to the client. +A data frame describing the groups. } \description{ DataSHIELD implentation of \code{dplyr::group_keys} diff --git a/man/ifElseDS.Rd b/man/ifElseDS.Rd index 8e41516..a7662d6 100644 --- a/man/ifElseDS.Rd +++ b/man/ifElseDS.Rd @@ -27,7 +27,7 @@ ifElseDS( \item{size}{An optional size declaring the desired output size. If supplied, this overrides the size of condition.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.if_else} which is written to the serverside. +A vector with the same size as \code{condition} and the same type as the common type of \code{true}, \code{false}, and \code{missing}. } \description{ DataSHIELD implentation of \code{dply::if_else}. diff --git a/man/mutateDS.Rd b/man/mutateDS.Rd index 160be46..a194232 100644 --- a/man/mutateDS.Rd +++ b/man/mutateDS.Rd @@ -28,8 +28,7 @@ to add to the right hand side). See \code{relocate} for more details.} to add to the right hand side). See \code{relocate} for more details.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.mutate} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of \code{mutate}. diff --git a/man/renameDS.Rd b/man/renameDS.Rd index f5ba441..a3f2c17 100644 --- a/man/renameDS.Rd +++ b/man/renameDS.Rd @@ -12,8 +12,7 @@ renameDS(tidy_expr, df.name) \item{df.name}{A data frame or tibble.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.rename} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of\code{dplyr::rename}. diff --git a/man/selectDS.Rd b/man/selectDS.Rd index 2052a8c..0a04104 100644 --- a/man/selectDS.Rd +++ b/man/selectDS.Rd @@ -12,8 +12,7 @@ selectDS(tidy_expr, df.name) \item{df.name}{A data frame or tibble.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.select} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of \code{dplyr::select}. diff --git a/man/sliceDS.Rd b/man/sliceDS.Rd index 5cf4ab6..55e57d8 100644 --- a/man/sliceDS.Rd +++ b/man/sliceDS.Rd @@ -22,8 +22,7 @@ the grouping structure is recalculated based on the resulting data, otherwise th kept as is.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.slice} which is written -to the serverside. +An object of the same type as \code{df.name}, typically a data frame or tibble. } \description{ DataSHIELD implentation of \code{dplyr::slice}. diff --git a/man/ungroupDS.Rd b/man/ungroupDS.Rd index 5f42edb..88527a8 100644 --- a/man/ungroupDS.Rd +++ b/man/ungroupDS.Rd @@ -12,8 +12,7 @@ ungroupDS(tidy_expr, x) \item{x}{A tibble.} } \value{ -the object specified by the \code{newobj} argument of \code{ds.ungroup} which is written -to the serverside. +An ungrouped data frame or tibble. } \description{ DataSHIELD implentation of \code{dplyr::ungroup}.