38
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),]もちろん、これは 1 次元のリストしか提供しません。

  • arrange(d, desc(data))plyr行名を削除するパッケージから。

  • で次数をo = order(-d$data)調べ、 でフレームを再構築します

    data.frame(d[o,], row.names=rownames(d)[o])
    

    …それでも、間違った列名が残ります。

これを行うための正気の方法はありますか?

4

1 に答える 1

44

あなたは最初の試みに近づいていましたが、使用するのを忘れていましたdrop = FALSE:

> d[order(-d$data), , drop = FALSE]
    data
yak    4
baz    3
bar    2
foo    1
于 2012-10-31T11:08:19.803 に答える