У меня есть ряд операций с фреймами данных, которые я хотел бы ускорить с помощью 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. Я подозреваю, что параллельный вариант может не работать с этим типом проблем.
Есть какие-нибудь советы, как сделать это быстрее? Может быть, базовое решение R?