R: ссылочный номер итерации при вызове sfLapply (1: N, функция (x)) - PullRequest
0 голосов
/ 28 апреля 2011

Можно ли ссылаться на номер итерации в вызове sfLapply следующим образом -

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

    }


results <- sfLapply(1:200000, wrapper)

Где i - номер итерации, поскольку sfLapply циклически повторяет 1: 200000.

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

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

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

1 Ответ

1 голос
/ 28 апреля 2011

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

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

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

...