Функция ffdfdply вылетает R и работает очень медленно

Научиться вычислять задачи в R для больших наборов данных (более 1 или 2 ГБ), я пытаюсь использовать ff пакет и ffdfdply функция. (Смотрите эту ссылку о том, как использовать ffdfdply: R language: проблемы с вычислением "group by" или разделением с помощью пакета ff)

Мои данные имеют следующие столбцы:
"id" "дата рождения" "диагностировать" "дата_диагностика"

Для каждого "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. Такое же поведение при применении сводки по "технике"....

Так что если кто-то столкнется с такой же проблемой и найдет решение, это будет очень полезно. Также ffdfdply становится очень медленным (медленнее, чем SAS...), и я думаю о разработке другой стратегии для выполнения такого рода задач.

Является ffdfdply принимая во внимание, что, например, набор данных упорядочен по id? (поэтому не нужно просматривать все данные, чтобы получить одинаковые идентификаторы...).

Итак, если кто-нибудь знает другие подходы к этому ddply проблема, это было бы здорово для всех пользователей "больших наборов данных в 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 ответ

Я также заметил это при использовании пакета, который мы недавно загрузили в CRAN. Похоже, это вызвано перегрузкой в ​​пакете ffbase функций извлечения и установки "[.ff" и "[<-. Ff" из пакета ff.

Я удалю эту функцию из пакета и скоро выложу ее в CRAN. В то же время вы можете использовать версию 0.7 ffbase, которую вы можете получить здесь: 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")

Дайте мне знать, если это помогло.

Другие вопросы по тегам