Rでは、私は重要でないオブジェクトのリストを持っています(Rは順序を定義できると期待できるスカラーのような単純なオブジェクトではありません)。私はリストをソートしたい。ほとんどの言語では、ソート関数に渡される一対のリスト要素を比較する関数などをプログラマが提供することができます。どうすればリストを並べ替えることができますか?Rの中の重要でない要素のリストをソートR
答えて
これを簡単に行うには、オブジェクトが名前と値の2つの要素を持つリストであるといいます。値は数値です。それは私たちが並べ替えたいものです。あなたはより多くの要素を持っていると想像することができます。
sort
ヘルプページには、sort
にはxtfrm
が使用されています。 xtfrm
は、x[i]
のクラスに対して==
と>
メソッドを使用することを示しています。
まず私はソートしたいオブジェクト定義します:今
xx <- lapply(c(3,5,7,2,4), function(i) list(name=LETTERS[i], value=i))
class(xx) <- "myobj"
を、x[i]
年代にxtfrm
作品以来、私は希望の要素を返す[
関数を定義する必要がありますが、それでもと右のクラス
`[.myobj` <- function(x, i) {
class(x) <- "list"
structure(x[i], class="myobj")
}
今、私たちはmyobj
クラスの==
と>
機能を必要とします。これらを適切にベクトル化することで、よりスマートになる可能性があります。ソート関数の場合は、長さが1のmyobj
であることがわかるので、最初の要素を使用して関係を定義します。
`>.myobj` <- function(e1, e2) {
e1[[1]]$value > e2[[1]]$value
}
`==.myobj` <- function(e1, e2) {
e1[[1]]$value == e2[[1]]$value
}
今すぐsort
が機能します。
sort(xx)
あなたのオブジェクトのための完全なOps
関数を記述するために、より適切と考えられるかもしれません。しかし、ちょうど並べ替えるには、これはあなたが必要とするすべてのようです。 S3スタイルを使用してこれを行う方法の詳細については、Venables/Ripleyのp.89-90を参照してください。また、あなたのオブジェクトのために簡単にxtfrm
関数を書くことができれば、それはより簡単で最も可能性が高いでしょう。
関数order
を使用すると、文字または数値のアトリビュートと後続の引数を持つブレークタイのソート順を決定できます。あなたが望むものについてもっと具体的にする必要があります。 「些細でないオブジェクト」の例を作成し、あるRオブジェクトで望む順序を指定します。リストは、おそらくほとんどの非ベクトルオブジェクトである:
> slist <- list(cc=list(rr=1), bb=list(ee=2, yy=7), zz="ww")
> slist[order(names(slist))] # alpha order on names()
$bb
$bb$ee
[1] 2
$bb$yy
[1] 7
$cc
$cc$rr
[1] 1
$zz
[1] "ww"
slist[c("zz", "bb", "cc")] # an arbitrary ordering
$zz
[1] "ww"
$bb
$bb$ee
[1] 2
$bb$yy
[1] 7
$cc
$cc$rr
[1] 1
1つのオプションは、あなたのオブジェクトのxtfrm
方法を作成することです。 order
のような機能は、場合によっては動作する複数の列を取ります。 gtools
パッケージには、mixedsort
のような特定のケースに特化した機能もいくつかあります。
- 1. Rのリストの要素をソートする方法は?
- 2. R - cbindリストの要約要素
- 3. rのリスト要素のペアを作成
- 4. R:リスト内の各要素の最後のサブ要素にアクセス
- 5. Rの名前リスト(要素ではない)
- 6. R - その要素
- 7. XMLの要素R
- 8. 重要性のテストR
- 9. R:複雑なリストの要素を関数で操作する
- 10. 重要度サンプリングR
- 11. Rは、要素
- 12. リスト要素を結合するR
- 13. リスト要素からベクトルを作るR
- 14. 日付時刻要素のペアごとの重複のリストをR
- 15. Rでリスト要素に値を代入()しないのはなぜですか?
- 16. リストの要素をrの中のxの関数として呼び出す
- 17. R:ベクトルの番号要素
- 18. Rのリスト要素にNULLを代入していますか?
- 19. ランダムな要素ごとの乗算R
- 20. リスト要素の長さに応じた並べ替えリストR
- 21. Rでは、サブリストの要素の値に応じてリストのリストの要素を選択する方法は?
- 22. 名前のリストにdata.framesの要素を追加するR
- 23. rのリストの要素に名前を付ける方法は?
- 24. rのリスト内の要素を結合する
- 25. 各リスト要素の最初の値をR
- 26. R - リストの要素の順序を変更する
- 27. Rのリストのコンポーネントに要素を動的に追加する
- 28. Rの回帰モデルの中およびその間の要素
- 29. ANOVAテーブルのインターメッティングR重要度コード?
- 30. RフレームのソートR
あなたは、この重要な要素リストのスニペットを提供して、他の人があなたが話していることを知ることができますか?再現性のある質問を書くヒント:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Chase