2011-04-28 1 views
0

Можно сослаться на номер итерации при вызове sfLapply следующим образом -R: номер итерации в вызове sfLapply (1: N, функция (х))

wrapper <- function(a) { 
    y.mat <- data.frame(get(foo[i,1]), get(foo[i,2])) 
     ... 
     ... 
     do other things.... 

    } 


results <- sfLapply(1:200000, wrapper) 

Где я это номер итерации как sfLapply циклически проходит через 1: 200000.

Проблема, с которой я столкнулся, состоит в том, что у меня есть более 200 000 случаев для тестирования, при этом каждый случай требует создания data.frame, на котором будут выполняться различные операции.

У меня есть процессор Intel Core 2 Duo 2 ГГц (ноутбук MacBook), и поэтому я начал исследовать пакет снегопада, чтобы воспользоваться параллельной обработкой. Это привело меня к sfLapply, и поэтому я начал исследовать, могу ли я переписать свой код для работы с lapply(). Тем не менее, мне еще предстоит встретить примеры, которые ссылаются на номер итерации в вызовах lappy().

Возможно, я направляюсь в неправильном направлении. Если у кого-то есть предложения, я был бы очень благодарен.

+0

Я думаю, что я ответил на мой собственный вопрос или, вернее, Джим Holtman сделал :-) http://r.789695.n4.nabble.com/lapply-tc863740.html – codingknob

+0

Это было предложено до: HTTP: // stackoverflow.com/questions/4164960/which-list-element-is-being-processed-when-using-snowfallsflapply –

ответ

1

Вы не используете параметр a в коде для обертки. Все числа от 1: 200000 будут переданы в оболочку, так что именно это представляет вашу итерацию (вместо i).

Не забывайте, что они не будут отображаться в порядке (любезно предоставлено sfLapply).

Насколько я знаю, нет никакого способа узнать, сколько итераций вы входите, поскольку разные процессы не знают, что делают другие.

Смежные вопросы