Разрыв вложенного цикла foreach в R - PullRequest
0 голосов
/ 11 февраля 2019

Я довольно новичок в использовании таких пакетов, как "foreach" и "do.parallel".Сейчас я пытаюсь выяснить, как разбить оператор во вложенном цикле foreach.Вот упрощенный пример того, что я хочу сделать.Это исходный цикл for, который я хотел бы воспроизвести с помощью foreach (на самом деле мой код не может быть легко преобразован в цикл while, но если такое решение существует, можно вместо этого использовать цикл while):

for (i in 1:30) {
  for (j in 1:40) {
    x <- paste0(i,j)
    print(x)
    if (j >= 30) {
      break
    }
  }
} 

Это моя попытка перевести на foreach.Я хочу распараллелить только внешний цикл, но хотел бы иметь возможность разорвать внутренний (последовательный) цикл после выполнения определенного условия if.

(cl <- (detectCores() - 1) %>%  makeCluster(outfile = "")) %>% registerDoParallel

foreach (i = 1:30, .packages = "foreach") %dopar% {
  foreach (j = 1:40) %do% {
    x <- paste0(i,j)
    print(x)
    if (j >= 30) {
      break
    }
  }
}

Я изучил другие решения, предложенные для SO, однако большинство решений были намного более продвинутыми, чем простой случай, который я ищу.

Спасибо!

...