Функция 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")
Дайте мне знать, если это помогло.