Моя цель - выполнить некоторую операцию с фреймом данных следующим образом:
exp_info <- data.frame(location.Id = 1:1e7,
x = rnorm(10))
Для каждого местоположения я хочу сделать квадрат переменной x
и записать отдельный файл как csv. Мои фактические вычисления более длинные и содержат другие вещи, так что это упрощенный пример c. Вот как я распараллеливаю свою задачу:
library(doParallel)
myClusters <- parallel::makeCluster(6)
doParallel::registerDoParallel(myClusters)
foreach(i = 1:nrow(exp_info),
.packages = c("dplyr","data.table"),
.errorhandling = 'remove',
.verbose = TRUE) %dopar%
{
rowRef <- exp_info[i, ]
rowRef <- rowRef %>% dplyr::mutate(x.sq = x^2)
fwrite(rowRef, paste0(i,'_iteration.csv'))
}
Когда я смотрю в свой рабочий каталог, у меня записаны все отдельные файлы csv (файлы 1e7 csv), что говорит о том, что приведенный выше код является успешным. Однако мой foreach l oop не заканчивается, даже если все файлы записаны, и я должен убить задание, которое также не вызывает никаких ошибок. Кто-нибудь знает, почему это могло произойти?