【发布时间】:2017-06-11 17:43:53
【问题描述】:
我正在处理包含超过 2^31 个观察值的大量数据。实际观测次数接近 35 亿次。
我正在使用 R 包“biglm”来运行包含大约 70 个预测变量的回归。我一次读取一百万行数据并更新回归结果。数据已使用 R 库“ffdf”以 ffdf 格式保存,以快速加载并避免耗尽我所有的 RAM。
这是我正在使用的代码的基本大纲:
library(ff,ffbase,biglm)
load.ffdf(dir='home')
dim(data) #the ffdf contains about 70 predictors and 3.5 billion rows
chunk_1 <- data[1:1000000,]
rest_of_data <- data[1000000:nrow(data),]
# Running biglm for first chunk
b <- biglm(y~x1+x2+...+x70, chunk_1)
chunks <- ceiling((nrow(rest_of_data)/1000000)
# Updating biglm results by iterating through the rest of the data chunks
for (i in seq(1,chunks)){
start <- 1+((i-1))*1000000
end <- min(i*1000000,nrow(d))
d_chunk <- d[start:end,]
b<-update(b,d_chunk)
}
结果看起来不错,一切运行顺利,直到使用每个数据块更新模型的累积观察次数超过 2^31 次观察。然后,我收到一个错误,内容为
In object$n + NROW(mm) : NAs produced by integer overflow
如何解决这个溢出问题?提前感谢您的帮助!
【问题讨论】:
-
@DavidArenburg 我目前使用的是 64 位系统,并且我使用的是 R 3.4.0。但是,我仍然遇到整数溢出问题。
-
你真的有一个 1.8TB 的数据集吗?