如何对只有一列的数据框进行排序,而不会丢失rownames? [英] How can I sort a data.frame with only one column, without losing rownames?
问题描述
返回:
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])
...仍然给我错误的列名。
有没有一个理智的方法这样做?
您第一次尝试关闭,只是忘了使用 drop = FALSE
:
> d [order(-d $ data),,drop = FALSE]
data
yak 4
baz 3
bar 2
foo 1
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 theplyr
package, which drops the row names.Find out the order with
o = order(-d$data)
, then reconstruct the frame withdata.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?
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
这篇关于如何对只有一列的数据框进行排序,而不会丢失rownames?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!