23

SPSS にエクスポートしたい R にかなり大きなデータフレームがあります。このファイルは、そもそも R にインポートしようとして何時間も頭痛の種になりましたがread.fwf()、オプションcomment.char="%"(ファイルに表示されない文字) とfill= TRUE(いくつかの行が欠けている固定幅の ASCII ファイルでした) を使用して成功しましたすべての変数、エラー メッセージの原因)。

とにかく、私のデータフレームは現在、3,9ミルの観測と48の変数(すべての文字)で構成されています。df2 <- df[1:1000000,]4 x 1 mill obsセットに分割することで、ファイルにすばやく書き込むことwrite.table(df2)ができます。

R が大規模なデータセットには適していないという逸話を何年も聞いてきましたが、この種の問題に実際に遭遇したのはこれが初めてです。他のアプローチ(ファイルをディスクに直接「ダンプ」する低レベルの方法)があるかどうか、またはこのタイプの大きなファイルのエクスポートを効率的に処理できる未知のパッケージがあるかどうか疑問に思いますか?

4

5 に答える 5

24

1)ファイルがすべて文字列であるwrite.table()場合、最初にファイルをに変更すると、使用量が大幅に短縮されて保存されmatrixます。

2)また、たとえば1000000行のチャンクで、ただし常に同じファイルに、引数を使用して書き出しますappend = TRUE

于 2012-03-15T06:58:23.050 に答える
8

お使いのマシンの RAM が不足しているため、R はスワップ ファイルを使用する必要があり、速度が低下していると思われます。コードにお金を払っているのであれば、新しいコードを書くよりも RAM を追加購入する方が安いでしょう。

とは言え、いくつかの可能性はあります。ファイルをデータベースにエクスポートし、そのデータベースの機能を使用してテキスト ファイルに書き込むことができます。この質問に対する JD Long の回答は、この方法でファイルを読み込む方法を示しています。プロセスを元に戻すことはそれほど難しくありません。あるいは、bigmemoryおよびffパッケージ (Davy が述べたように) を使用して、そのようなファイルを書き込むこともできます。

于 2012-03-14T14:57:11.453 に答える
7

非常に大きなファイルと R の場合の答えは、よくあることですが、この種の作業をデータベースにオフロードするのが最善です。SPSS には ODBC 接続があり、RODBCR から SQL へのインターフェイスを提供します。

私は、私の情報をチェックアウトする過程で、スクープされたことに注意してください.

于 2012-03-14T15:01:06.227 に答える
7

私は非常に大きなファイル (10 Gb 以上) を読み取るためにのみ使用しますが、ffパッケージには非常に大きな dfs を書き込む機能があると思います。

于 2012-03-14T14:40:50.983 に答える