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 は機能しません。ドキュメントによると、ドル ($) はデータフレームのように機能するはずです?!
アドバイスをありがとう:)