Frage

eine Erklärung, dass überprüft, ob etwas wahr ist, und wenn nicht druckt eine bestimmte Fehlermeldung und beendet

War es hilfreich?

Lösung

stopifnot()

Sie können auch in Paketen interessiert sein wie runit und testthat für Unit-Tests.

Andere Tipps

@ Nick:

Sie können Ihre Fehlermeldung steuern, wenn Sie eine Funktion mit einem beschreibenden Namen schreiben, die Bedingung zu testen, die einen Fehler in Ihrem Programm werfen. Hier ein Beispiel:

Less_Than_8 = function(x) return(x < 8)

for (i in 1:10)
{
  print(i)
  stopifnot(Less_Than_8(i))
}

Damit werden die Zahlen 1 bis 8 drucken, dann eine Meldung aus, die besagt,

Error: Less_Than_8(i) is not TRUE

Es wäre schön, wenn die „i“ in Klammern mit dem Wert ersetzt wurde, die den Test nicht bestanden, aber man bekommt, was man bezahlt.

Wenn Sie etwas schicker als die, Blick in runit und testthat als Harlan vorgeschlagen.

Dies kann mit dem Befehl stop erreicht werden. Dieser Befehl wird die Ausführung einer Funktion stoppen und die Fehlermeldung drucken. Zum Beispiel können wir testen, ob die Variable something FALSE ist:

if(something == FALSE){
   stop("error message to print")   
}

In ähnlicher Weise wird der warning Befehl wird eine Warnung ausgegeben (aber weiterhin den Code ausgeführt wird).

if(something == FALSE){
   warning("error message to print")   
}

Diese beiden sind durch Basis R vorgesehen und erfordern keine Pakete laufen oder sind eigene Funktionen zu schreiben. Ich ziehe diesen Ansatz zu schreiben Code mit weniger Abhängigkeiten und diese Syntax weit verbreitet in der Verpackungsentwicklung verwendet wird. Doch eine ähnliche Funktionalität wird durch das „assertthat“ Paket mit der assert_that Funktion unterstützt, die vor kurzem im Rahmen der Hadleys „tidyverse“ veröffentlicht wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top