
Is an Argument a List of Objects of a Specific S3 Class or Type?
Source:R/assertions.R
assert_list_of.Rd
Checks if an argument is a list
of objects inheriting from the S3 class or type specified.
Arguments
- arg
A function argument to be checked
- class
The S3 class or type to check for
- named
If set to
TRUE
, an error is issued if not all elements of the list are named.- optional
Is the checked argument optional? If set to
FALSE
andarg
isNULL
then an error is thrown
Value
The function throws an error if arg
is not a list or if arg
is a list but
its elements are not objects inheriting from class
or of type class
.
Otherwise, the input 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_list()
,
assert_expr()
,
assert_filter_cond()
,
assert_function_param()
,
assert_function()
,
assert_has_variables()
,
assert_integer_scalar()
,
assert_list_element()
,
assert_logical_scalar()
,
assert_named_exprs()
,
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(list) {
assert_list_of(list, "data.frame")
}
example_fun(list(mtcars, iris))
try(example_fun(list(letters, 1:10)))
#> Error in assert_list_of(list, "data.frame") :
#> Each element of `list` must be an object of class/type 'data.frame' but the following are not:
#> ✖ Element 1 is a character vector
#> ✖ Element 2 is an integer vector
try(example_fun(c(TRUE, FALSE)))
#> Error in assert_s3_class(arg, "list") :
#> `arg` must be an object of class 'list' but is a logical vector
example_fun2 <- function(list) {
assert_list_of(list, "numeric", named = TRUE)
}
try(example_fun2(list(1, 2, 3, d = 4)))
#> Error in assert_list_of(list, "numeric", named = TRUE) :
#> All elements of list must be named.
#> The following elements are not named: 1, 2 and 3