It works
list_classes <- function(ls) { unique(sapply(ls, class)) } lapply(x, list_classes) #[[1]] #[1] "numeric" "character" #[[2]] #[1] "numeric" #[[3]] #[1] "numeric" "list"
Edit: Recursive version
list_classes <- function(ls) { # get classes of list cls <- sapply(ls, class) # which are lists themselves which_ls <- cls == "list" lists <- ls[which_ls] # which are non lists non_lists <- cls[!which_ls] # recursively evaluate contents of list for their classes return( unique( c(non_lists, sapply(lists, list_classes), recursive = T) ) ) } lapply(x, list_classes) #[[1]] #[1] "numeric" "character" #[[2]] #[1] "numeric" #[[3]] #[1] "numeric"
source share