Verwendung von die tryCatch-Funktion für die Bedingungsbehandlung in R

Jinku Hu 8 November 2021
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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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