R para cada problema (algunos procesos devuelven NULL)

Me estoy encontrando con un problema con elforeach sección de un programa con el que estoy trabajando en R. El programa se usa para ejecutar simulaciones para distintos parámetros y luego devolver los resultados a una lista única que luego se usa para generar un informe. El problema ocurre cuando no todas las ejecuciones de simulación asignadas son realmente visibles en el informe. En todos los sentidos, parece que en realidad solo se asignó un subconjunto de las ejecuciones asignadas.

Es más probable que esto ocurra con conjuntos de datos más grandes (períodos de tiempo más largos para una simulación, por ejemplo). Es menos probable que ocurra con una nueva ejecución del programa, y ​​es más probable que ocurra si algo ya está ocupando RAM. El gráfico de uso de la memoria para el monitor del sistema a veces alcanza un máximo del 100% de RAM y del 100% de intercambio, y luego desciende bruscamente, después de lo cual desaparece una de las cuatro sesiones de R infantil. Cuando usas.verbose enforeach(), el archivo de registro muestra que las ejecuciones de simulación que no se muestran en el informe se devuelven comoNULL, mientras que los que se muestran en el informe se devuelven normalmente (una lista de marcos de datos y variables de caracteres). El mismo conjunto de parámetros puede producir este efecto o puede producir un gráfico completo; es decir, el conjunto de parámetros no es diagnóstico.

foreach() Se utiliza para aproximadamente una docena de parámetros..combine escbind, .inorder es falso, todos los demás parámetros internos como.errorhandling son por defecto

Esto es, por supuesto, bastante irritante, ya que las simulaciones pueden demorar más de veinte minutos en ejecutarse y resultar inútiles debido a la falta de datos. ¿Hay alguna manera de asegurar que estas sesiones "caídas" no se eliminen, o que si lo son, entonces esto se captura de alguna manera?

(Si es importante, la computadora que se está utilizando tiene ocho procesadores y, por lo tanto, ejecuta cuatro procesos secundarios, y el operador paralelo registrado es delDoMC paquete)

El código está estructurado de la siguiente manera:

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)

Respuestas a la pregunta(1)

Su respuesta a la pregunta