Skip to contents

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


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



A function argument to be checked


The S3 class or type to check for


If set to TRUE, an error is issued if not all elements of the list are named.


Is the checked argument optional? If set to FALSE and arg is NULL then an error is thrown


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.


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