How can I sort a data.frame with only one column, without losing rownames?

匿名 (未验证) 提交于 2019-12-03 02:46:02

问题:

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?

回答1:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!