繁体   English   中英

ffdfdply函数崩溃R并且非常慢

[英]ffdfdply function crashes R and is very slow

学习如何在R中为大型数据集(超过1或2 GB)计算任务,我试图使用ff包和ffdfdply函数。 (请参阅此链接,了解如何使用ffdfdplyR语言:计算“分组依据”或使用ff包分割的问题

我的数据包含以下列:
“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

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

我将从包中删除此功能,并很快将其上传到CRAN。 同时,你可以使用ffbase的0.7版本,你可以在这里找到: http ://dl.dropbox.com/u/25690064/ffbase_0.7.ta​​r.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")

如果有帮助,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM