R problem foreach (niektóre procesy zwracają NULL)

Mam problem zforeach sekcja programu, z którym pracuję w R. Program jest używany do uruchamiania symulacji dla różnych parametrów, a następnie zwracania wyników do pojedynczej listy, która jest następnie używana do generowania raportu. Problem występuje, gdy nie wszystkie przypisane przebiegi symulacji są rzeczywiście widoczne w raporcie. Pod każdym względem wygląda na to, że przydzielono tylko podzbiór przypisanych przebiegów.

Jest to bardziej prawdopodobne przy większych zestawach danych (na przykład dłuższe okresy symulacji). Jest mniej prawdopodobne, że wystąpi przy nowym uruchomieniu programu, a bardziej prawdopodobne, że wystąpi, gdy coś już zajmuje pamięć RAM. Wykres wykorzystania pamięci dla monitora systemowego czasami osiąga szczyt przy 100% pamięci RAM i 100% wymiany, a następnie gwałtownie zanika, po czym jedna z czterech sesji R dziecka zniknęła. Podczas używania.verbose wforeach(), plik dziennika pokazuje, że przebieg symulacji, który nie jest wyświetlany w raporcie, jest zwracany jakoNULL, podczas gdy te, które są wyświetlane w raporcie, są zwracane jako normalne (lista ramek danych i zmiennych znakowych). Ten sam zestaw parametrów może wywołać ten efekt lub wygenerować pełny wykres; to znaczy zestaw parametrów nie jest diagnostyczny.

foreach() jest używany dla około kilkunastu parametrów..combine jestcbind, .inorder jest false, wszystkie inne parametry wewnętrzne, takie jak.errorhandling są domyślne.

Jest to oczywiście dość irytujące, ponieważ uruchomienie symulacji może potrwać nawet dwadzieścia minut, aby okazać się bezużyteczne ze względu na brakujące dane. Czy istnieje sposób na to, aby te „upuszczone” sesje nie zostały upuszczone, a jeśli tak, to w jakiś sposób zostanie to złapane?

(Jeśli jest to ważne, używany komputer ma osiem procesorów i dlatego uruchamia cztery procesy potomne, a zarejestrowany równoległy operator pochodzi zDoMC pakiet)

Kod ma następującą strukturę:

test.results <- foreach(parameter.one = parameter.one.space, .combine=cbind) %:%
foreach(parameter.two = parameter.two.space, .combine=cbind) %:%
...
foreach(parameter.last = parameter.last.space, .combine=cbind, .inorder=FALSE) %dopar%
{

run.result <- simulationRun(parameter.one,
            parameter.two,
            ...
            parameter.last)

 list(list(parameters=list(parameter.one,
            parameter.two,
            ...
            parameter.last),
  runResult <- run.result))
}

return(test.results)

questionAnswers(1)

yourAnswerToTheQuestion