Ich versuche, die Funktion try()
zu verwenden, um mit Fehlern umzugehen, die in meiner parallelisierten for-Schleife auftreten:
mit
%Vor%Ich bekomme die folgende Fehlermeldung
%Vor%Wie kann ich die foreach "Schleife" dazu bringen, die Fehlermeldung zu ignorieren (oder zumindest etwas eleganter damit umzugehen)?
Sie können tryCatch
verwenden und den Fehler entsprechend behandeln. Hier wird der Fehler ignoriert (Rückgabe NULL)
oder verwenden Sie einfach das eingebaute .errorhandling='remove'
wie Sie haben, ohne dass try
die Fehler bereits entfernen sollte.
Wenn Sie die Fehlerbehandlung "Entfernen" oder "Übergeben" in foreach
verwenden möchten, müssen Sie den Fehler nicht selbst abfangen. Hier sind die Ergebnisse, wenn die Fehlerbehandlung auf "Entfernen" gesetzt wird:
Hier sind die Ergebnisse bei der Verwendung von "pass":
%Vor% Durch Verwendung von try
wird der Fehler abgefangen und dann von der Funktion try
in ein "try-error" -Objekt übersetzt. Dabei wird der Fehler von foreach
bis zur clusterApplyLB
-Funktion (die verwendet wird) versteckt implementieren Sie das doParallel
Backend) bemerkt das "try-error" -Objekt in der Liste der Ergebnisse und löst einen Fehler im Masterprozess aus. Ich würde das einen Fehler in doParallel
nennen.
Beachten Sie, dass die von @LegalizeIt angegebene Lösung funktioniert, da sie ein NULL
anstelle eines "try-error" -Objekts zurückgibt, wodurch der Fehler in doParallel
vermieden wird.
Tags und Links r parallel-processing try-catch foreach