Функция Foreach .combine для объединения списков в R - PullRequest
0 голосов
/ 30 октября 2018

следующий параллельный цикл, который я пытаюсь запустить в 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, чтобы она могла работать с изменяющимся числом переменных?

1 Ответ

0 голосов
/ 30 октября 2018

Рассматривали ли вы использование 'c'

results <- foreach (i = 1:4, .combine='c', .multicombine=TRUE) %dopar% {
  test <- i
  test <- as.list(test)
  list(test)
}

Если это добавляет дополнительный нежелательный «уровень» к вашим результатам, вы можете использовать «unlist» для удаления этого уровня.

unlist(results, recursive = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...