2

最近、大規模なデータセット (40 万行以上) に取り組んでいます。これまでのところ、私は XTS 形式を使用してきました。これは、数万分の 1 の要素の「小さな」データセットで問題なく動作しました。

プロジェクトが大きくなった今、R はデータベースのデータを取得して XTS に入れるときに単純にクラッシュします。

Rは最大2 ^ 32-1要素(またはバージョンによっては2 ^ 64-1)のサイズのベクトルを持つことができるはずだと私は理解しています。したがって、XTSにはいくつかの制限がある可能性があるという結論に達しましたが、ドキュメントで答えを見つけることができませんでした. (理論的に可能なベクトルサイズの理解について、私は少し自信過剰だったのかもしれません)。

要約すると、次のことを知りたいです。

  1. XTSには確かにサイズ制限があります
  2. 大規模な時系列を処理する最もスマートな方法は何だと思いますか? (私は、分析をいくつかの小さなデータセットに分割することを考えていました)。
  3. エラー メッセージは表示されません。R は単に自動的にシャットダウンします。これは既知の動作ですか?

解決

  1. R と同じで、使用するメモリの種類 (64 ビット、32 ビット) によって異なります。とにかくとてつもなく大きい。
  2. データのチャンク化は確かに良いアイデアですが、必須ではありません。
  3. この問題は、R 2.11.1 で解決された R 2.11.0 のバグに起因します。長い日付ベクトル (ここでは XTS のインデックス) に問題がありました。
4

1 に答える 1

5

あなたの 2 つの質問について、私の 0.02 ドル:

  1. はい、R ベクトルには 2^32-1 要素の制限があります。これはインデックス作成ロジックに由来するものであり、伝えられるところによると、R の「奥深く」にあるため、すぐに置き換えられる可能性は低いとされています (非常に多くの既存のコードに影響を与えるため)。詳細については、r-devel リストを Google で検索してください。これは以前にも出てきました。xtsパッケージは追加の制限を課しません

  2. はい、物事を管理しやすいチャンクに分割するのが最も賢明なアプローチです。R の 32 ビット バージョンのみを使用していたときは、大規模なデータ セットに対してこれを行っていました。

いくつかの「メモリ不足」のアプローチがありますが、最初に問題を再考し、一度に 400k 行すべてが本当に必要であることを確認します。

于 2010-06-29T02:57:29.553 に答える