Checks if a parameter (PARAMCD
) in a dataset is provided in the expected
unit.
Usage
assert_unit(
dataset,
param,
required_unit = NULL,
get_unit_expr,
arg_name = rlang::caller_arg(required_unit),
message = NULL,
class = "assert_unit",
call = parent.frame()
)
Arguments
- dataset
Dataset to be checked
The variable
PARAMCD
and those used inget_unit_expr
are expected.- param
Parameter code of the parameter to check
- required_unit
Expected unit(s)
If the argument is set to
NULL
, it is checked only whether the unit is unique within the parameter.Permitted Values: A character vector or
NULL
- get_unit_expr
Expression used to provide the unit of
param
- arg_name
string indicating the label/symbol of the object being checked.
- message
string passed to
cli::cli_abort(message)
. WhenNULL
, 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 there is more than one non-missing unit in the dataset or
if the unit variable differs from the expected unit for any observation of the parameter in the input dataset.
Otherwise, the dataset is returned invisibly.
See also
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_one_to_one()
,
assert_param_does_not_exist()
,
assert_s3_class()
,
assert_same_type()
,
assert_symbol()
,
assert_vars()
,
assert_varval_list()
Examples
library(dplyr)
advs <- tribble(
~USUBJID, ~VSTESTCD, ~VSTRESN, ~VSSTRESU, ~PARAMCD, ~AVAL,
"P01", "WEIGHT", 80.1, "kg", "WEIGHT", 80.1,
"P02", "WEIGHT", 85.7, "kg", "WEIGHT", 85.7
)
assert_unit(advs, param = "WEIGHT", required_unit = "kg", get_unit_expr = VSSTRESU)
try(
assert_unit(
advs,
param = "WEIGHT",
required_unit = c("g", "mg"),
get_unit_expr = VSSTRESU
)
)
#> Error in eval(expr, envir) :
#> It is expected that "WEIGHT" has unit of "g" or "mg". In the input
#> dataset the unit is "kg".
# Checking uniqueness of unit only
advs <- tribble(
~USUBJID, ~VSTESTCD, ~VSTRESN, ~VSSTRESU, ~PARAMCD, ~AVAL,
"P01", "WEIGHT", 80.1, "kg", "WEIGHT", 80.1,
"P02", "WEIGHT", 85700, "g", "WEIGHT", 85700
)
try(
assert_unit(advs, param = "WEIGHT", get_unit_expr = VSSTRESU)
)
#> Error in eval(expr, envir) :
#> Multiple units "kg" and "g" found for "WEIGHT". Please review and update
#> the units.