У меня есть параллельный процесс, который выглядит так:
library(foreach)
library(doSNOW)
cl = makeCluster(parallel::detectCores() - 1, type = "SOCK", outfile = "out.txt")
registerDoSNOW(cl)
l = foreach(i = 1:100) %dopar% {
res = withCallingHandlers(
read.csv("somefilethatdoesntexist.csv"), error = function(e) e)
if(inherits(res, "error")) res = NULL
res
}
Я ожидаю, что даже если в «выражении» будет ошибка, цикл должен продолжиться, но он завершится с ошибкой, а полученная переменная «l» не будет создана.
Это, кажется, происходит, особенно в связи с отсутствующими файлами. Но если я обертываю его в tryCatch и обрабатываю соответствующим образом внутри «выражения», как это может привести к ошибке?