Gibt es eine Möglichkeit, die Fehlermeldung zu steuern, die gemeldet wird, wenn stopifnot () stoppt?
Nick
12
@ Nick, nein. Verwenden Sie diese stopifnot()Option zum Testen der Gültigkeit, um zu testen, ob der Code das tut, was er tun soll, aber if (blahdiblah) stop("error message")zum Testen der Eingabe, um zu testen, ob die Eingabe in das Programm gültig ist. Nur letzteres sollte jemals während des normalen Gebrauchs passieren.
Harlan
6
Siehe auch Hadleys neues assertthatPaket, das bessere Antworten gibt als stopifnot: github.com/hadley/assertthat
Harlan
12
@ Nick:
Sie können Ihre Fehlermeldung steuern, wenn Sie eine Funktion mit einem beschreibenden Namen schreiben, um die Bedingung zu testen, die einen Fehler in Ihrem Programm auslöst. Hier ist ein Beispiel:
Sie können auch einfach die Funktionsdefinition einfügen stopifnot().
naught101
2
naught101, der Punkt, um den Test in einer benannten Funktion zu haben, besteht darin, den Namen des Tests in der Fehlermeldung zu drucken
Matthew
4
Dies kann mit dem stopBefehl erreicht werden. Dieser Befehl stoppt die Ausführung einer Funktion und gibt die Fehlermeldung aus. Zum Beispiel können wir testen, ob die Variable somethingist FALSE:
if(something ==FALSE){
stop("error message to print")}
In ähnlicher Weise gibt der warningBefehl eine Warnung aus (führt den Code jedoch weiter aus).
if(something ==FALSE){
warning("error message to print")}
Diese werden beide von Base R bereitgestellt und erfordern keine Pakete zum Ausführen oder Schreiben Ihrer eigenen Funktionen. Ich bevorzuge diesen Ansatz, um Code mit weniger Abhängigkeiten zu schreiben, und diese Syntax wird häufig in der Paketentwicklung verwendet. Eine ähnliche Funktionalität wird jedoch vom "assertthat" -Paket mit der assert_thatFunktion unterstützt, die kürzlich als Teil von Hadleys "tidyverse" veröffentlicht wurde.
stopifnot()
Option zum Testen der Gültigkeit, um zu testen, ob der Code das tut, was er tun soll, aberif (blahdiblah) stop("error message")
zum Testen der Eingabe, um zu testen, ob die Eingabe in das Programm gültig ist. Nur letzteres sollte jemals während des normalen Gebrauchs passieren.assertthat
Paket, das bessere Antworten gibt alsstopifnot
: github.com/hadley/assertthat@ Nick:
Sie können Ihre Fehlermeldung steuern, wenn Sie eine Funktion mit einem beschreibenden Namen schreiben, um die Bedingung zu testen, die einen Fehler in Ihrem Programm auslöst. Hier ist ein Beispiel:
Dadurch werden die Nummern 1 bis 8 gedruckt und anschließend eine Nachricht mit der Aufschrift gedruckt
Es wäre schön, wenn das "i" in Klammern durch den Wert ersetzt würde, der den Test nicht bestanden hat, aber Sie bekommen, wofür Sie bezahlen.
Wenn Sie etwas ausgefalleneres brauchen, schauen Sie sich Runit an und testen Sie, wie Harlan es vorgeschlagen hat.
quelle
stopifnot()
.Dies kann mit dem
stop
Befehl erreicht werden. Dieser Befehl stoppt die Ausführung einer Funktion und gibt die Fehlermeldung aus. Zum Beispiel können wir testen, ob die Variablesomething
istFALSE
:In ähnlicher Weise gibt der
warning
Befehl eine Warnung aus (führt den Code jedoch weiter aus).Diese werden beide von Base R bereitgestellt und erfordern keine Pakete zum Ausführen oder Schreiben Ihrer eigenen Funktionen. Ich bevorzuge diesen Ansatz, um Code mit weniger Abhängigkeiten zu schreiben, und diese Syntax wird häufig in der Paketentwicklung verwendet. Eine ähnliche Funktionalität wird jedoch vom "assertthat" -Paket mit der
assert_that
Funktion unterstützt, die kürzlich als Teil von Hadleys "tidyverse" veröffentlicht wurde.quelle