2016-05-06 11 views
0

にエクスポートしています。私は自分の問題に対して適切な答えを探していますが、正確で適切な答えが見つかりませんでした。大文字のベクトルをCSVファイルとしてR

私は大きな文字ベクトル(約4百万の要素、3GB以上の大きさ)を持っています。私は出力/この大きな文字ベクトルを各要素が行を表すCSVファイルとしてエクスポートします。

このファイルをwrite.table,write.csvまたはwrite.csv2とエクスポートすると、メモリ割り当ての問題が発生します。

今のところ、私はRSQLiteパッケージとfwrite機能をdata.tableパッケージから試しました。どちらもさまざまな理由で機能していないようです。

  • RQSLiteのアプローチには処理に4時間かかり、最終的にはそれを強制終了しなければなりませんでした。
  • fwrite()関数は、入力としてdata.frameを要求します。大きな文字ベクトルをdata.frameに強制しようとすると、メモリの問題が再び発生しました。

誰でもこの問題の良いアプローチを知っていますか?

(私は、Windowsの64ビットマシン、16ギガバイトRAM、500ギガバイトSSDの午前とRのバージョン3.2.5を実行)

+0

Windowsの場合、 'memory.size()'を見てください。 – epi99

+1

'x < - list(x);を実行するとどうなりますか? setDT(x) 'を実行してから' fwrite'を使いますか?また、メモリの問題? –

+0

私は@docendodiscimusの解決策を最初に試してみましょう。それでも問題がある場合は、いつでも 'for'ループ内で一度に100,000個の要素しかない小さな断片に分割することができます。 – Benjamin

答えて

1

コメントとして、あなたはlistにあなたの文字ベクトルxを変換することができ、その後、data.table::setDTを使用する場合がありますこれをdata.tableに変換すると、(コピーなし)となります。だから、次のようになります。

x <- list(x) 
library(data.table) 
setDT(x) 

今、あなたは、CSVファイルを作成するのdata.table例えば新しいfwrite機能を使用することができます。

関連する問題