Checks if a parameter (PARAMCD
) in a dataset is provided in the expected
unit.
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()
)
Dataset to be checked
The variable PARAMCD
and those used in get_unit_expr
are expected.
none
Parameter code of the parameter to check
none
Expected unit(s)
If the argument is set to NULL
, it is checked only whether the unit is
unique within the parameter.
A character vector or NULL
NULL
Expression used to provide the unit of param
none
string indicating the label/symbol of the object being checked.
rlang::caller_arg(arg)
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.
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.
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.
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()
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.