Checks if the argument is a function and if all expected arguments are provided by the function.
assert_function(
arg,
params = NULL,
optional = FALSE,
arg_name = rlang::caller_arg(arg),
message = NULL,
class = "assert_function",
call = parent.frame()
)
The function throws an error
if the argument is not a function or
if the function does not provide all arguments as specified for the
params
argument (assuming ellipsis is not in function formals)
A function
The function to be checked
A character vector
A character vector of expected argument names for the aforementioned function in arg
.
If ellipsis, ...
, is included in the function formals of the function in arg
,
this argument, params
will be ignored, accepting all values of the character vector.
Is the checked argument optional?
If set to FALSE
and arg
is NULL
then an error is thrown.
string indicating the label/symbol of the object being checked.
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.
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.
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_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_unit()
,
assert_vars()
,
assert_varval_list()
example_fun <- function(fun) {
assert_function(fun, params = c("x"))
}
example_fun(mean)
try(example_fun(1))
try(example_fun(sum))
Run the code above in your browser using DataLab