obj_is_list() tests if x is considered a list in the vctrs sense. It
returns TRUE if:
x is a bare list with no class.
x is a list explicitly inheriting from "list".
list_all_vectors() takes a list and returns TRUE if all elements of
that list are vectors.
list_all_size() takes a list and returns TRUE if all elements of that
list have the same size.
obj_check_list(), list_check_all_vectors(), and list_check_all_size()
use the above functions, but throw a standardized and informative error if
they return FALSE.
obj_is_list(x)
obj_check_list(x, ..., arg = caller_arg(x), call = caller_env())
list_all_vectors(x)
list_check_all_vectors(x, ..., arg = caller_arg(x), call = caller_env())
list_all_size(x, size)
list_check_all_size(x, size, ..., arg = caller_arg(x), call = caller_env())For vec_*() functions, an object. For list_*() functions, a
list.
These dots are for future extensions and must be empty.
An argument name as a string. This argument will be mentioned in error messages as the input that is at the origin of a problem.
The execution environment of a currently
running function, e.g. caller_env(). The function will be
mentioned in error messages as the source of the error. See the
call argument of abort() for more information.
The size to check each element for.
Notably, data frames and S3 record style classes like POSIXlt are not considered lists.
obj_is_list(list())
#> [1] TRUE
obj_is_list(list_of(1))
#> [1] TRUE
obj_is_list(data.frame())
#> [1] FALSE
list_all_vectors(list(1, mtcars))
#> [1] TRUE
list_all_vectors(list(1, environment()))
#> [1] FALSE
list_all_size(list(1:2, 2:3), 2)
#> [1] TRUE
list_all_size(list(1:2, 2:4), 2)
#> [1] FALSE
# `list_`-prefixed functions assume a list:
try(list_all_vectors(environment()))
#> Error in list_all_vectors(environment()) :
#> `x` must be a list, not an environment.