Ниже приводится параллельный цикл, который я пытаюсь запустить в R:
cl <- makeCluster(30,type = "SOCK")
registerDoSNOW(cl)
results <- foreach (i = 1:30, .combine='bindlist', .multicombine=TRUE) %dopar% {
test <- i
test <- as.list(test)
list(test)
}
stopCluster(cl)
Результатом моего кода всегда является список, и я хочу объединить этот список в один большой список. Таким образом, я написал следующую функцию .combine:
bindlist <- function(x,y,...){
append(list(x),list(y),list(...))
}
Поскольку я делаю несколько прогонов и меняю количество переменных, я попытался использовать ...
. Однако это не работает. Как я могу переписать функцию .combine, чтобы она могла работать с изменением количества переменных?
Вы думали об использовании 'c'?
results <- foreach (i = 1:4, .combine='c', .multicombine=TRUE) %dopar% {
test <- i
test <- as.list(test)
list(test)
}
Если это добавляет к вашим результатам дополнительный нежелательный «уровень», вы можете использовать «unlist», чтобы удалить этот уровень.
unlist(results, recursive = FALSE)