Checks if there is a one to one mapping between two lists of variables.
assert_one_to_one(
dataset,
vars1,
vars2,
dataset_name = rlang::caller_arg(dataset),
message = NULL,
class = "assert_one_to_one",
call = parent.frame()
)
Dataset to be checked
The variables specified for vars1
and vars2
are expected.
none
First list of variables
none
Second list of variables
none
string indicating the label/symbol of the object being checked.
rlang::caller_arg(dataset)
string passed to cli::cli_abort(message)
. When NULL
, default messaging
is used (see examples for default messages). "dataset_name"
can be used in messaging.
NULL
Subclass of the condition.
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.
An error if the condition is not meet. The input otherwise.
Checks for valid input and returns warning or errors messages:
assert_atomic_vector()
,
assert_character_scalar()
,
assert_character_vector()
,
assert_data_frame()
,
assert_date_vector()
,
assert_expr()
,
assert_expr_list()
,
assert_filter_cond()
,
assert_function()
,
assert_integer_scalar()
,
assert_list_element()
,
assert_list_of()
,
assert_logical_scalar()
,
assert_named()
,
assert_numeric_vector()
,
assert_param_does_not_exist()
,
assert_s3_class()
,
assert_same_type()
,
assert_symbol()
,
assert_unit()
,
assert_vars()
,
assert_varval_list()
library(dplyr)
library(rlang)
df <- tribble(
~SPECIES, ~SPECIESN,
"DOG", 1L,
"CAT", 2L,
"DOG", 1L
)
assert_one_to_one(df, vars1 = exprs(SPECIES), vars2 = exprs(SPECIESN))
df_many <- tribble(
~SPECIES, ~SPECIESN,
"DOG", 1L,
"CAT", 2L,
"DOG", 3L
)
try(
assert_one_to_one(df_many, vars1 = exprs(SPECIES), vars2 = exprs(SPECIESN))
)
#> Error in eval(expr, envir) :
#> For some values of "SPECIES" there is more than one value of "SPECIESN"
#> ℹ Call `admiral::get_one_to_many_dataset()` to get all one-to-many values.
try(
assert_one_to_one(df_many, vars1 = exprs(SPECIESN), vars2 = exprs(SPECIES))
)
#> Error in eval(expr, envir) :
#> There is more than one value of "SPECIESN" for some values of "SPECIES"
#> ℹ Call `admiral::get_many_to_one_dataset()` to get all many-to-one values.