拆分ffdf对象

时间:2016-05-20 10:20:38

标签: r ff ffbase

我使用ffffbase库管理大型csv文件(~40Go和275e6观察)。我想根据其中一个列(这是一个因子列)对该文件进行拆分/分区。

使用正常的数据框,我会做类似的事情:

a <- data.frame(rnorm(10000,0,1),
                sample(1:100,10000,replace=T),
                sample(letters,10000,replace = T))
names(a) <- c('V1','V2','V3')
a_partition <- split(a,a$V3)
names(a_partition) <- paste("df",names(a_partition),sep = "_")
list2env(a_partition,globalenv())

ffffbase没有split功能。因此,查看ffbase文档,我找到ffdfply并尝试按如下方式使用它:

ffa <- as.ffdf(a)
ffa_partititon <- ffdfdply(x = ffa,split = ffa$V3)

唉,我收到了日志消息:

  

计算分割尺寸
   建立分割位置
   在分裂1/1上工作,在26个分裂元素的RAM中提取数据,
       总计,0.00015 GB,而最大指定
       使用BATCHBYTES指定的数据为0.01999 GB
     ...将FUN应用于所选数据
     错误:参数&#34; FUN&#34;缺少,没有默认

我试过FUN = as.data.frame(因为函数的结果必须是数据框)而没有运气:这样做使ffa_partition成为ffa的副本......

如何分区我的ffdf?

1 个答案:

答案 0 :(得分:0)

晚了两年,但是我相信这可以满足您的需求:

result_list <- list()
for(letter in letters){
    result_list[[letter]] <- subset(ffa, V3 == letter)
}