Probleme mit try () in foreach () in R

8

Ich versuche, die Funktion try() zu verwenden, um mit Fehlern umzugehen, die in meiner parallelisierten for-Schleife auftreten:

%Vor%

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)?

    
slabofguinness 30.06.2015, 12:24
quelle

2 Antworten

5

Sie können tryCatch verwenden und den Fehler entsprechend behandeln. Hier wird der Fehler ignoriert (Rückgabe NULL)

%Vor%

oder verwenden Sie einfach das eingebaute .errorhandling='remove' wie Sie haben, ohne dass try die Fehler bereits entfernen sollte.

    
jenesaisquoi 30.06.2015, 12:42
quelle
7

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:

%Vor%

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.

    
Steve Weston 01.07.2015 20:42
quelle