Verwendung von die tryCatch-Funktion für die Bedingungsbehandlung in R
In diesem Artikel werden mehrere Methoden zur Verwendung der Funktion tryCatch
für die Bedingungsbehandlung in R demonstriert.
Verwenden Sie tryCatch
, um Fehlerbedingungen in R . zu behandeln
In der Sprache R werden drei Arten von integrierten Bedingungen bereitgestellt, die als Ausnahmen vom Code ausgelöst werden können. Herkömmlicherweise werden die schwerwiegendsten Fehler als Fehler bezeichnet, die normalerweise die Funktion beenden oder die Ausführung anhalten. Dann gibt es Warnungen, die anzeigen, ob während der Ausführung der Funktion ein Fehler auftritt, das Problem jedoch teilweise behoben werden kann. Schließlich haben wir Nachrichten, die verwendet werden, um den Benutzer über einige leichte Probleme zu informieren. Diese drei Bedingungen haben entsprechende Funktionen namens stop
, warning
und message
, die aufgerufen werden können, um die gegebene Bedingung auszulösen.
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1(10)
Ausgabe:
log( 10 ) = [1] 2.302585
Der vorherige Code definiert beispielsweise eine Funktion namens f1
, die ein einzelnes Argument x
verwendet und das Ergebnis log(x)
mit zusätzlicher Formatierung ausgibt. Beachten Sie, dass, wenn der Benutzer ein nicht numerisches Argument an die Funktion f1
übergibt, diese einen Fehler auslöst. Wir können diesen Fehler behandeln, indem wir den Handler bei der Funktion tryCatch
registrieren.
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1("f")
Ausgabe:
Error in log(x) : non-numeric argument to mathematical function
Beachten Sie, dass das Registrieren des Handlers bedeutet, dass wir den Standardcode für diesen Fehler mit dem vom Benutzer bereitgestellten Code überschreiben. Das folgende Beispiel zeigt, wie die Standardfehlermeldung durch die benutzerdefinierte AusgabeZeichenkette ersetzt wird. Unterdessen verhält sich die folgende Funktion normal, wenn die Fehlerbedingung nicht ausgelöst wird.
f1 <- function(x) {
tryCatch(
error = function(cnd) "The custom output that we need to print",
cat("log(", x, ") = ", (log(x)))
)
}
f1("f")
Ausgabe:
[1] "The custom output that we need to print"
Die übliche Verwendung für die Funktion tryCatch
besteht darin, einen Codeblock zu implementieren, der ausgeführt werden muss, wenn die Fehlerbedingung geworfen wird. In den geschweiften Klammern hinter der Zeile error = function(cnd)
geben wir den Codeblock an, der ausgeführt wird, wenn ein Fehler auftritt. Die folgenden Zeilen nach dem Fehlercodeblock werden normalerweise ausgeführt, wenn der Handler aktiv ist.
f1 <- function(x) {
tryCatch(
error = function(cnd) {
print("hello")
log(10)
},
cat("log(", x, ") = ", (log(x)))
)
}
f1("x")
Ausgabe:
[1] "hello"
[1] 2.302585
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook