1

32 ビット Windows マシンで約 17M x 4 の値のデータセットを使用しています。これには GNU R で ~700 MB が必要です。そのため、いくつかの拡張操作を実行しようとすると、2 GB の制限に簡単に達してしまい、メモリ不足エラーが発生します (ベクトルを割り当てることができません ...)。

問題ありません。このようなデータをディスクに保存するためのパッケージ「ff」があります。ただし、最初のサブセットは同じエラーで実行されます。ff のドキュメントによると、「[」は、データの 2 つのコピーをメモリにロードすることなく、別の ffdf に直接サブセット化されると予想していました。私は正確にどこが間違っていますか?

ffshares = read.table.ffdf(
  file=tmpFilename, header = FALSE, sep = ",", quote = "\"",
  dec = ".",
  col.names = c("articleID", "measure", "time", "value"),
  na.strings = c("","-1","\\N"),
  colClasses = c("integer","factor","POSIXct","integer"),
  check.names = TRUE, fill = TRUE,
  strip.white = FALSE, blank.lines.skip = TRUE,
  comment.char = "",
  allowEscapes = F, flush = F #, nrow=1000
)
# Until here, the R process requires about 200M

ffshares = ffshares[ffshares[,"articleID"] %in% articles[,"articleID"],]
# As I try this, memory consumption exceeds 1.7G and the available limits

注: 記事は、最大 30,000 行のデータフレームです。articleID は単純な整数です。

おまけの質問: ffshares[,"articleID"] は機能しますが、ffshares$articleID は機能しません。ドキュメントによると、ドル ($) はデータフレームのように機能するはずです?!

アドバイスをありがとう:)

4

1 に答える 1

-1

これがあなたの質問に対する直接の答えではないことをお詫びしますが、私は同様のサイズのオブジェクトにbigmemoryパッケージを使用しました。filebacked.big.matrix関数と大行列最適化演算子。質問に対する直接の回答が得られない場合に役立つことがあります。

于 2012-10-19T22:23:52.907 に答える