У меня есть ряд операций с кадрами данных, которые я хотел бы ускорить с помощью 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?