我花了几个小时阅读使用 ff 包,但还没有掌握这个主题。基本上,我想对大数据进行分析并保存分析的结果/统计数据。
我在我的数据集上使用 biglm 修改了用 ff 包编写的示例代码。 http://cran.r-project.org/web/packages/ff/ff.pdf 这个问题与这个问题非常相似 在 R 中建模一个非常大的数据集(180 万行 x 270 列)
下面是我的代码
library(ff)
library(ffbase)
library(doSNOW)
registerDoSNOW(makeCluster(4, type = "SOCK"))
memory.limit(size=32000)
setwd('Z:/data')
wd <- getwd()
data.path <- file.path(wd,'ffdb')
data.path.train <- file.path(data.path,'train')
ff.train <- read.table.ffdf(file='train.tsv', sep='\t')
save.ffdf(ff.train, dir=data.path.train)
library(biglm)
# Here I'm implementing biglm model on ffdf data
# Vi represents the column names
form <- V27 ~ V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10 + V11 + V12 + V13 + V14 + V15
ff.biglm <- for (i in chunk(ff.train, by=500)){
if (i[1]==1){
message("first chunk is: ", i[[1]],":",i[[2]])
biglmfit <- biglm(form, data=ff.train[i,,drop=FALSE])
}else{
message("next chunk is: ", i[[1]],":",i[[2]])
biglmfit <- update(biglmfit, ff.train[i,,drop=FALSE])
}
}
运行上述代码时,它会给出以下错误消息:
第一个块是:1:494 错误:无法分配大小为 19.4 Gb 的向量另外:有 50 个或更多警告(使用 warnings() 查看前 50 个)
这个关于 biglmfit 大小的错误消息是否无法适应内存?有什么办法可以将 biglmfit 保存为 ffdf 数据类型?或者就此而言,有什么方法可以将分析统计信息以块的形式存储到 ffdf 类型中?谢谢你。
编辑:
vmode(ff.train)
V1 V2 V3 V4 V5 V6 V7 V8 V9
V10
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
V21 V22 V23 V24 V25 V26 V27
"integer" "integer" "integer" "integer" "integer" "integer" "integer"