Data frame truncation - Set the row.names by the first non-short length

Before this was always using the first length, which resulted in the
data.frame being truncated if the first argument was a length 1 vector
to be recycled.

This ended up being an easy bug to find. I fixed the bug and added a test for it.
Yes you are right, that is much clearer as well. :+1: