append-Zeilen dataframe mit foreach-Paket
Ich habe ein problem mit dem Anhängen von Werten an einen Daten-frame durch parallele Verarbeitung.
Ich habe eine Funktion, die einige Berechnung und liefert ein dataframe, einschließlich dieser Berechnung ist ein Zufallsprodukt.
also, was ich gemacht habe ist :
randomizex <- function(testdf)
{
foreach(ind=1:1000)%dopar%
{
testdf$X = sample(testdf$X,nrow(testdf), replace=FALSE)
fit = lm(X ~ Y, testdf)
newdf <- rbind(newdf, data.frame(pc=ind, err=sum(residuals(fit)^2) ))
}
return(newdf)
}
resdf = randomizex(mydf)
wenn ich das Ergebnis betrachten resdf
ist leer
wenn ich ersetzen %dopar%
mit %do%
das Ergebnis wird korrekt berechnet, aber es ist zu langsam ..
ist es sowieso zu steigern, das ein bisschen ??
- erinnern uns daran, wo
foreach
unddopar
kommen. Und Ihremydf
zu - so können wir Ihr problem reproduzieren. - mydf ist nur eine zufällige dataframe, und foreach ist ein Paket und man sollte hinzufügen
library(foreach)
undlibrary(doMC)
,registerDoMC()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie müssen Lesen Sie die Dokumentation für
foreach
. Ihre code-block sollte compute einem einzigen Teil, dann sollten Sie das.combine
option zu sagen, wie Sie Mitglied werden Sie alle zusammen. Betrachten Sie die Beispiele in derhelp(foreach)
für mehr Orientierung. Es ist nicht eine gerade Ersatz für einefor
Schleife.Beispiel:
foreach
- siehe editMüssen Sie zum ändern der 'foreach-Schleife wie:
Hoffe, es hilft!