Hat jemand Beispiele / Tutorials zur Ausnahmebehandlung in R? Die offizielle Dokumentation ist sehr knapp.
r
exception-handling
gappy
quelle
quelle
Antworten:
Neben der Antwort von Shane, die Sie auf andere StackOverflow-Diskussionen verweist, können Sie auch eine Codesuchfunktion ausprobieren. Diese ursprüngliche Antwort, die auf die Codesuche von Google verweist, wurde inzwischen eingestellt, aber Sie können es versuchen
Nur für die Aufzeichnung gibt es auch
try
,tryCatch
kann aber vorzuziehen sein. Ich habe versucht, bei der Google-Codesuche schnell zu zählen, aber bei dem Versuch werden zu viele Fehlalarme für das Verb selbst angezeigt - es scheinttryCatch
jedoch weit verbreitet zu sein.quelle
Grundsätzlich möchten Sie die
tryCatch()
Funktion nutzen. Weitere Informationen finden Sie in der Hilfe ("tryCatch").Hier ist ein triviales Beispiel (denken Sie daran, dass Sie mit einem Fehler tun können, was Sie wollen):
Schauen Sie sich diese verwandten Fragen an:
quelle
Dieses Ergebnis einer verwandten Google-Suche hat mir geholfen: http://biocodenv.com/wordpress/?p=15 .
quelle
Die Funktion
trycatch()
ist ziemlich einfach und es gibt viele gute Tutorials dazu. Eine ausgezeichnete Erklärung für die Fehlerbehandlung in R findet sich in Hadley Wickhams Buch Advanced-R . Das Folgende ist eine sehr grundlegende Einführung inwithCallingHandlers()
undwithRestarts()
in so wenigen Worten wie möglich:Nehmen wir an, ein Programmierer auf niedriger Ebene schreibt eine Funktion zur Berechnung des Absolutwerts. Er ist sich nicht sicher, wie er es berechnen soll, weiß aber, wie man einen Fehler konstruiert, und vermittelt fleißig seine Naivität:
Ein Programmierer mittlerer Ebene schreibt auch eine Funktion zur Berechnung des Absolutwerts, wobei er die leider unvollständige
low_level_ABS
Funktion verwendet. Er weiß, dass der Low-Level-Code einennegative_value
Fehler auslöst, wenn der Wert vonx
negativ ist, und schlägt eine Lösung für das Problem vor, indem er einen Wert festlegtrestart
, mit dem Benutzermid_level_ABS
steuern können, wiemid_level_ABS
einnegative_value
Fehler behoben wird (oder nicht) .Schließlich verwendet ein übergeordneter Programmierer die
mid_level_ABS
Funktion, um den Absolutwert zu berechnen, und erstellt einen Bedingungshandler, der den Benutzer auffordert,mid_level_ABS
einennegative_value
Fehler mithilfe des Neustarthandlers zu beheben.Der Sinn all dessen ist, dass die Funktion mithilfe von
withRestarts()
und feststellen konnte, wie Fehler behoben werden können, die durch Fehler ausgelöst wurden, ohne die Ausführung von zu stoppen. Dies ist etwas, mit dem Sie nichts anfangen können :withCallingHandlers()
high_level_ABS
mid_level_ABS
low_level_ABS
mid_level_ABS
tryCatch()
In der Praxis
low_level_ABS
stellt dies eine Funktion dar,mid_level_ABS
die häufig aufgerufen wird (möglicherweise sogar millionenfach), wobei die korrekte Methode zur Fehlerbehandlung je nach Situation variieren kann und die Wahl der Behandlung bestimmter Fehler den Funktionen höherer Ebenen überlassen bleibt (high_level_ABS
).quelle
Die Neustartfunktion ist in R, das von Lisp geerbt wurde, sehr wichtig. Dies ist nützlich, wenn Sie eine Funktion im Schleifenkörper aufrufen möchten und das Programm nur fortgesetzt werden soll, wenn der Funktionsaufruf zusammenbricht. Versuchen Sie diesen Code:
quelle