You can use 'lengths()':
# Your original list your_list1 <- list(a=c(1:3), b=c(1:5), c=c(1:8), d=c(1:10)) # Your subseted list your_list2 <- lapply(your_list1,function(x) x[ x > 5 ]) # Your 'non_empty_elements' list your_final_list <- your_list2[(lengths(your_list2) > 0)] > your_final_list $c [1] 6 7 8 $d [1] 6 7 8 9 10
Pdt: Names assigned to objets that you create must make sense to you, but I agree Stephen Henderson that it's not a good practice to use a functions' name for objects. I think it is not necessary either, to use such long names as I have, except for pedagogical reasons.