ffdfdply函数崩溃R并且非常慢

时间:2012-11-19 14:20:32

标签: r ff

学习如何在R中为大型数据集(超过1或2 GB)计算任务,我正在尝试使用ff包和ffdfdply函数。 (请参阅此链接,了解如何使用ffdfdplyR language: problems computing "group by" or split with ff package

我的数据包含以下列:
 “id”“birth_date”“diagnose”“date_diagnose”

每个“id”有几行,我想提取出诊断的第一个日期。

我会申请:

library(ffbase)
library(plyr)
load(file=file_name); # to load my ffdf database, called data.f . 

my_fun <- function(x){
                      ddply( x , .(id), summarize, 
                      age  = min(date_diagnose - birth_date, na.rm=TRUE)) 
          }
result  <- ffdfdply(x = data.f, split = data.f$id,
                    FUN = function(x) my_fun(x) , trace=TRUE) ; 
result[1:10,] # to check.... 

这很奇怪,但是这个命令:ffdfdply(x = data.f, .... )正在使RStudio(和R)崩溃。有时相同的命令会崩溃R,有时不会崩溃。 例如,如果我再次触发ffdfdply行(第一次工作),R将崩溃。

同样使用其他功能,数据等也会产生相同的效果。没有内存增加,或log.txt中的任何内容。 应用summaryBy“技术”时的行为相同....

因此,如果有人遇到同样的问题并找到解决方案,那将非常有帮助。 同样ffdfdply变得非常慢(比SAS慢......),我正在考虑制定另一种策略来完成这类任务。

ffdfdply考虑到例如数据集按ID排序吗? (因此它不必查看所有数据以采用相同的ID ...)。

因此,如果有人知道这个ddply问题的其他方法,那么对于所有“具有低RAM内存的R中的大数据集”用户来说,它真的很棒。

这是我的sessionInfo()

R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Danish_Denmark.1252  LC_CTYPE=Danish_Denmark.1252   
[3] LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C                   
[5] LC_TIME=Danish_Denmark.1252    

 attached base packages:
[1] tools     stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] plyr_1.7.1   ffbase_0.6-1 ff_2.2-10    bit_1.1-9

1 个答案:

答案 0 :(得分:2)

在使用我们最近上传到CRAN的软件包时也注意到了这一点。它似乎是由于包ffbase中的“[.ff”和“[&lt; - .ff”提取器和setter函数从包ff中重载而引起的。

我将从包中删除此功能,并很快将其上传到CRAN。同时,您可以使用ffbase的0.7版本,您可以在此处获取: http://dl.dropbox.com/u/25690064/ffbase_0.7.tar.gz

并将其安装为:

download.file("http://dl.dropbox.com/u/25690064/ffbase_0.7.tar.gz", "ffbase_0.7.tar.gz")
shell("R CMD INSTALL ffbase_0.7.tar.gz")

如果有帮助,请告诉我。