我正在使用32位Windows计算机上大约17M x 4值的数据集。这需要~700 MB的GNU R - 所以当我尝试进行一些增强操作时,很容易达到2 GB的限制,并且我收到内存不足错误(无法分配矢量......)。
没问题 - 有一个软件包“ff”将这些数据存储在磁盘上。但是我的第一个子集在同一个错误中出现问题。根据ff文档,我预计“[”将直接子集到另一个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
注意:文章是一个行数约为30K的数据框。 articleID是一个简单的整数。
奖金问题:ffshares [,“articleID”]有效,但ffshares $ articleID没有。根据文档,美元($)应该像数据框一样工作?!
感谢您的任何建议:)
答案 0 :(得分:-1)
我很抱歉这不是您问题的直接答案,但我已将bigmemory package用于类似大小的对象。 fi lebacked.big.matrix函数和大矩阵优化运算符。如果您没有直接回答问题,您可能会发现它很有用。