13

R の調査に時間を費やしたところdata.tableですが、最大のパフォーマンス向上を期待できる条件について疑問に思っていました。おそらく簡単な答えは、大きな data.frame があり、この data.frame のサブセットを操作することが多い場合です。データ ファイルを読み込んでモデルを推定するだけでは、あまり期待できませんが、多くの[操作で違いが生じます。それは本当で唯一の答えですか、それとも他に何を考慮する必要がありますか? いつ問題になり始めますか?10x5、1,000x5、1,000,000x5?

data.table編集:一部のコメントは、多くの場合より高速であり、同様に重要であるが、遅くなることはほとんどないことを示唆しています。したがって、いつ使用しないかを知っておくとよいでしょうdata.table

4

2 に答える 2

10

data.table輝く場合が少なくともいくつかあります。

  • 既存のデータセットを新しい結果で更新します。は参照によるためdata.table、これは非常に高速です。
  • 分割-適用-分割するグループの数が多いタイプの戦略を組み合わせます(@PaulHiemstraの回答が指摘しているように)。
  • 本当に大きなデータセットに対してほとんど何でもします。

ベンチマークは次の とおりです。data.frame(ベース)、data.frame(パッケージデータフレーム)、data.tableのベンチマーク

于 2012-12-06T19:21:52.927 に答える
7

data.table非常に速い例の 1 つは、plyr有名になった分割適用結合タイプの作業です。data.frame次のデータを持つ があるとします。

precipitation     time   station_id
23.3              1      A01
24.1              2      A01
26.1              1      A02
etc etc

ステーション ID ごとに平均化する必要がある場合は、 、aveddplyなどの多数の R 関数を使用できますdata.table。の一意の要素の数が増えるとstation_iddata.table非常にうまくスケーリングされますが、たとえばddplyget は非常に遅くなります。例を含む詳細については、私のブログのこの投稿を参照してください。このテストは、150 倍以上の速度向上が可能であることを示しています。この差はもっと大きいかも…。

于 2012-12-06T19:01:50.977 に答える