coerce to data frame before analyzing shape; discard missing factors