Znalazłem funkcję/błąd w pakiecie foreach, którego nie rozumiem. Być może ktoś może mi wyjaśnić to zachowanie:Struktura list w pakiecie foreach
Stworzyłem pętlę for z pakietem foreach
(używam ich razem z obliczeniami mutlicore, ale tutaj, tylko w przykładzie sekwencyjnym, błąd pojawia się w obu wariantach). Ta pętla uruchamia r
razy. W każdym przebiegu zwracana jest lista z wpisami c
. Spodziewam się więc listy z wpisami r
, a każdy wpis składa się z c
list.
Mój kod był następujący:
library(foreach)
clusters <- 10
runs <- 100
temp <- foreach(r = 1:runs,
.combine = 'list',
.multicombine = TRUE) %do% {
signal_all <- lapply(1:clusters, function(x){
return(1)
})
return(signal_all)
} ## end do
Z tym kodem, wszystko działa zgodnie z oczekiwaniami, patrz poniższy obrazek:
Ale kiedy wzrasta runs <- 101
wyjście temp
jest to:
Oczekiwana struktura listy zostanie zniszczona. Ale podczas komentowania linii .combine = 'list'
wszystko działa zgodnie z oczekiwaniami.
library(foreach)
clusters <- 10
runs <- 100
temp <- foreach(r = 1:runs,
.multicombine = TRUE) %do% {
signal_all <- lapply(1:clusters, function(x){
return(1)
})
return(signal_all)
} ## end do
Może ktoś wyjaśnić to zachowanie? Dzięki za pomoc!