0

1) RGui を開いて とrequire(ff)入力し、RConsole にそれ以上何も入力せずにWindows Task Manager --> Processes --> RGui.exe、メモリ割り当てを確認すると、が表示され~30,000Kます。

2) RConsole に戻ります。と入力しData <- read.csv.ffdf(file="filename.csv",row.names=1)ます。この .csv ファイルは最大 30 MB です。

3)コンピューターがデータを読み込みます。読み込み中のメモリ割り当てを確認Rgui.exeします。131,436K.csv ファイルが R へのインポートを完了するまで、メモリは劇的に増加し、そこに留まります。

AFTER (前ではない!) このすべてで、私は行きます

 > object.size(Data)
  34510880 bytes

それは私の記憶の中にあることを確認します。

この問題はhereにも見られますが、唯一の答えの主張は、への呼び出しobject.sizeがそれをメモリに入れているということでした。しかしobject.size、私の記憶がこのオブジェクトでいっぱいになるのを目の当たりにした後、私はそうします。また、object.size を呼び出すとゼロ ラグがあるため、コンピューターが 0 ラグで瞬時に 30MB をメモリに入れることは不可能です。30MB の .csv をメモリにロードするのに 60 秒ほどかかります!

4

1 に答える 1

2

30 Mb の csv ファイルは、ffdf を使用せずに R に読み込むのに問題はありません。おそらく、ffdf ではうまく機能しない列がたくさんあります。次の例は問題なく実行され、あなたが言うメモリ量を使用しません。

spam = as.data.frame(matrix(runif(10e7), 1000, 2500)) # 76 mb
write.table(spam, file = "spam.csv", sep = ",")
spam2 = read.table("spam.csv", sep = ",")

ffdf限られた数の列で非常に大きな csv ファイル (>> 30 mb) で動作するように設計されています。この場合、 を使用する理由は見当たりませんffdf。読み込みを高速化する場合は、 を使用してオブジェクトをsave保存し、 を使用してバイナリ形式で保存し、 を使用して再度読み込みますload

于 2012-09-25T07:22:01.167 に答える