【问题标题】:Splitting an ffdf object拆分 ffdf 对象
【发布时间】:2016-09-17 13:38:42
【问题描述】:

我正在使用 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 应用于所选数据
错误:缺少参数“FUN”,没有默认值

我尝试了FUN = as.data.frame(因为函数的结果必须是一个数据框)但没有成功:这样做会使 ffa_partition 成为 ffa 的副本...

如何对我的 ffdf 进行分区?

【问题讨论】:

  • 您好,如果您查看ffdfapply 的帮助,您会看到第三个强制参数FUN 在您的通话中遗漏了,因此出现了错误消息。我会尝试 FUN=as.data.frame
  • @Eric Lecoutre :是的,我试过了,但它什么也没做(从字面上看,它返回我输入的 ffdf...)

标签: r ff ffbase


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 1970-01-01
    • 2021-05-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多