Skip to contents

Checks if an argument is a list of objects inheriting from the S3 class or type specified.

Usage

assert_list_of(arg, class, named = FALSE, optional = TRUE)

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 and arg is NULL 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.

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