eine Aussage, die etwas überprüft, ob wahr ist und wenn nicht eine gegebene Fehlermeldung ausgibt und beendetHat R eine assert-Anweisung wie in Python?
79
A
Antwort
99
11
@ 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))
}
Dies wird die Zahlen 1 bis 8 druckt, dann eine Nachricht drucken, die sagt
Error: Less_Than_8(i) is not TRUE
Es wäre schön, wenn die „i“ in Klammern mit dem Wert ersetzt wurde, dass hat den Test nicht bestanden, aber Sie bekommen, wofür Sie bezahlen.
Wenn Sie etwas Zarteres brauchen, schauen Sie in Runit und testen Sie, wie Harlan vorgeschlagen hat.
Gibt es eine Möglichkeit, die Fehlermeldung zu steuern, die gemeldet wird, wenn stopifnot() stoppt? – Nick
@Nick, nein. Verwenden Sie 'stopifnot()' für Validitätstests, um zu testen, dass der Code tut, was er tun soll, aber 'if (blahdiblah) stop (" Fehlermeldung ") für den Eingangstest, um zu testen, ob die Eingabe zum Programm ist gültig. Nur das letztere sollte jemals während des normalen Gebrauches geschehen. – Harlan
Siehe auch Hadleys neues 'assertthat'-Paket, das bessere Antworten liefert als 'stopifnot': https://github.com/hadley/assertthhat – Harlan