Р:ссылочный номер итерации при вызове sfLapply(1:N, function(x))

StackOverflow https://stackoverflow.com/questions/5812871

  •  25-10-2019
  •  | 
  •  

Вопрос

Можно ли ссылаться на номер итерации в вызове 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), и поэтому я начал исследовать пакет Snowfall, чтобы воспользоваться преимуществами параллельной обработки.Это привело меня к sfLapply, и я начал выяснять, смогу ли я переписать свой код для работы с lapply().Однако мне еще не встречались примеры, которые ссылались бы на номер итерации в вызовах lappy().

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top