Skip to contents

Checks if an argument is a data frame and (optionally) whether is contains a set of required variables

Usage

assert_data_frame(
  arg,
  required_vars = NULL,
  check_is_grouped = TRUE,
  optional = FALSE,
  arg_name = rlang::caller_arg(arg),
  message = NULL,
  class = "assert_data_frame",
  call = parent.frame()
)

Arguments

arg

A function argument to be checked

Default value

none

required_vars

A list of variables created using exprs()

Default value

NULL

check_is_grouped

Throws an error if dataset is grouped?

Default value

TRUE

optional

Is the checked argument optional? If set to FALSE and arg is NULL then an error is thrown

Default value

FALSE

arg_name

string indicating the label/symbol of the object being checked.

Default value

rlang::caller_arg(arg)

message

string passed to cli::cli_abort(message). When NULL, default messaging is used (see examples for default messages). "{arg_name}" can be used in messaging.

Default value

NULL

class

Subclass of the condition.

call

The execution environment of a currently running function, e.g. call = caller_env(). The corresponding function call is retrieved and mentioned in error messages as the source of the error.

You only need to supply call when throwing a condition from a helper function which wouldn't be relevant to mention in the message.

Can also be NULL or a defused function call to respectively not display any call or hard-code a code to display.

For more information about error calls, see Including function calls in error messages.

Value

The function throws an error if arg is not a data frame or if arg is a data frame but misses any variable specified in required_vars. Otherwise, the input is returned invisibly.

Examples

library(dplyr)
library(rlang)
dm <- tribble(
  ~STUDYID, ~USUBJID,
  "XYZ",    "1",
  "XYZ",    "2"
)

example_fun <- function(dataset) {
  assert_data_frame(dataset, required_vars = exprs(STUDYID, USUBJID))
}

example_fun(dm)

try(example_fun(select(dm, -STUDYID)))
#> Error in example_fun(select(dm, -STUDYID)) : 
#>   Required variable `STUDYID` is missing in `dataset`

try(example_fun("Not a dataset"))
#> Error in example_fun("Not a dataset") : 
#>   Argument `dataset` must be class <data.frame>, but is a string.

try(example_fun(group_by(dm, USUBJID)))
#> Error in example_fun(group_by(dm, USUBJID)) : 
#>   Argument `dataset` must not be a grouped dataset, please `ungroup()` it.