How can I sort a data.frame with only one column, without losing rownames?
dataframe, r, sorting
Solution
You were close with your first attempt, just forgot about using `drop = FALSE`:
> d[order(-d$data), , drop = FALSE]
data
yak 4
baz 3
bar 2
foo 1
Problem
``` data = c(1,2,3,4) names = c("foo", "bar", "baz", "yak") d = data.frame(data, row.names=names) ``` This returns: ``` data foo 1 bar 2 baz 3 yak 4 ``` Now, I'd like to sort this dataframe by the column, without losing the row names attached. So, my result would be: ``` data yak 4 baz 3 bar 2 foo 1 ``` I've already tried the following: `d[order(-d$data),]`, which of course only gives me the one-dimensional list. `arrange(d, desc(data))` from the `plyr` package, which drops the row names. Find out the order with `o = order(-d$data)`, then reconstruct the frame with ``` data.frame(d[o,], row.names=rownames(d)[o]) ``` … which still leaves me with the wrong column name. Is there any sane way to do this?