Checks if the argument is a function and if all expected arguments are provided by the function.
Usage
assert_function(
arg,
params = NULL,
optional = FALSE,
arg_name = rlang::caller_arg(arg),
message = NULL,
class = "assert_function",
call = parent.frame()
)Arguments
- arg
A function
The function to be checked
- Default value
none
- params
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 inarg, this argument,paramswill be ignored, accepting all values of the character vector.- Default value
NULL
- optional
Is the checked argument optional?
If set to
FALSEandargisNULLthen an error is thrown.- Default value
FALSE
- arg_name
string indicating the label/symbol of the object being checked.
- Default value
rlang::caller_arg(arg)
- 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.- Default value
NULL
- 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
callwhen throwing a condition from a helper function which wouldn't be relevant to mention in the message.Can also be
NULLor 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 the argument is not a function or
if the function does not provide all arguments as specified for the
paramsargument (assuming ellipsis is not in function formals)
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_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()
Examples
example_fun <- function(fun) {
assert_function(fun, params = c("x"))
}
example_fun(mean)
try(example_fun(1))
#> Error in example_fun(1) :
#> Argument `fun` must be a function, but is a number.
try(example_fun(sum))
#> Error in example_fun(sum) :
#> "x" is not an argument of the function specified for `fun`.
