Я нашел это решение до сих пор. Вместо удаления из a
я создаю фрейм данных, в котором будут удаляться строки. Я написал функцию объединения:
combine <- function(x, ...) {
mapply(rbind, x, ..., SIMPLIFY = FALSE)
}
И мой цикл выглядит примерно так:
# Set up the parallel
registerDoParallel( makeCluster(3L) )
# Loop
output <- foreach(i = 1:nrow(f), .combine = combine, .multicombine = TRUE) %dopar% {
tempA <- get_this_value()
tempB <- do_something_function()
tempC <- get_this_other_frame()
# Return the values
list(tempA, tempB, tempC)
}
Затем я получаю доступ к данным, используя output[[1]]
и так далее. Однако для этого решения мне все равно придется сделать setdiff
или anti_join
после цикла, чтобы удалить «нежелательные» строки из a
.