How to prevent a data frame degrading to a vector