dataframes still best constructed from vectors