У меня есть ряд операций с фреймами данных, которые я хотел бы ускорить, используя mclapply()
или другие lapply()
подобные функции. Один из самых простых способов для меня - сделать каждую строку фрейма данных небольшим фреймом данных в списке. Я могу сделать это довольно легко с plyr
следующим образом:
df <- data.frame( a=rnorm(1e4), b=rnorm(1e4))
require(plyr)
system.time(myList <- alply( df, 1, function(x) data.frame(x) ))
Когда у меня есть данные в виде списка, я легко могу сделать что-то вроде:
mclapply( myList, function(x) doSomething(x$a) )
Это работает плавно, но у меня достаточно данных, и шаг adply()
довольно медленный. Я попытался использовать многоядерный параллельный бэкэнд на шаге adply
, но он никогда не использовал более одного процессора, даже если я зарегистрировал 8. Я подозреваю, что параллельный вариант может не работать с такой проблемой
Какие-нибудь советы, как сделать это быстрее? Может быть решение Base R?