You could use a logical index to exclude every item with a data.frame
that has no rows:
# example data
l <- list(a=data.frame(a=1:3), b=data.frame(), c=data.frame(a=1:3))
# $a
# a
# 1 1
# 2 2
# 3 3
#
# $b
# data frame with 0 columns and 0 rows
#
# $c
# a
# 1 1
# 2 2
# 3 3
nr <- sapply(l, nrow)
# a b c
# 3 0 3
l <- l[nr > 0]
# $a
# a
# 1 1
# 2 2
# 3 3
#
# $c
# a
# 1 1
# 2 2
# 3 3