Skip to contents

Checks if the argument is a list of expressions where the expressions are variable-value pairs. The value can be a symbol, a string, a numeric, an expression, or NA.

Usage

assert_varval_list(
  arg,
  required_elements = NULL,
  accept_expr = TRUE,
  accept_var = FALSE,
  optional = FALSE,
  arg_name = rlang::caller_arg(arg),
  message = NULL,
  class = "assert_varval_list",
  call = parent.frame()
)

Arguments

arg

A function argument to be checked

required_elements

A character vector of names that must be present in arg

accept_expr

Should expressions on the right hand side be accepted?

accept_var

Should unnamed variable names (e.g. exprs(USUBJID)) on the right hand side be accepted?

optional

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

arg_name

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

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.

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 list of variable-value expressions. Otherwise, the input it returned invisibly.

Examples

library(dplyr, warn.conflicts = FALSE)
library(rlang)

example_fun <- function(vars) {
  assert_varval_list(vars)
}
example_fun(exprs(DTHDOM = "AE", DTHSEQ = AESEQ))

try(example_fun(exprs("AE", DTSEQ = AESEQ)))
#> Error in example_fun(exprs("AE", DTSEQ = AESEQ)) : 
#>   Argument `vars` must be a named list of expressions where each element
#> is a symbol, character scalar, numeric scalar, an expression, or NA, but is a
#> list.
#>  To create a list of expressions use `exprs()`.