data = c(1,2,3,4)
names = c("foo", "bar", "baz", "yak")
d = data.frame(data, row.names=names)
返回:
data
foo 1
bar 2
baz 3
yak 4
现在,我想按列对此数据框进行排序,而不会丢失附加的行名称。所以,我的结果将是:
data
yak 4
baz 3
bar 2
foo 1
我已经尝试过以下内容:
d[order(-d$data),]
,当然只给我一维列表。
arrange(d, desc(data))
包的 plyr
会删除行名称。
使用o = order(-d$data)
查找订单,然后使用
data.frame(d[o,], row.names=rownames(d)[o])
...仍然留下错误的列名。
有没有理智的方法来做到这一点?
答案 0 :(得分:36)
您第一次尝试就已经接近了,只是忘了使用drop = FALSE
:
> d[order(-d$data), , drop = FALSE]
data
yak 4
baz 3
bar 2
foo 1