instrukcja, która sprawdza, czy coś jest prawdą, a jeśli nie, wyświetla podany komunikat o błędzie i kończy działanie
Odpowiedzi:
stopifnot()
do testowania poprawności, aby sprawdzić, czy kod robi to, co powinien, ale if (blahdiblah) stop("error message")
do testowania danych wejściowych, aby sprawdzić, czy dane wejściowe do programu są prawidłowe. Tylko to ostatnie powinno się zdarzyć podczas normalnego użytkowania.
assertthat
pakiet Hadley , który daje lepsze odpowiedzi niż stopifnot
te: github.com/hadley/assertthat
@Nacięcie:
Możesz kontrolować swój komunikat o błędzie, jeśli napiszesz funkcję z opisową nazwą, aby przetestować warunek, który spowoduje błąd w programie. Oto przykład:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Spowoduje to wydrukowanie liczb od 1 do 8, a następnie wydrukowanie komunikatu
Error: Less_Than_8(i) is not TRUE
Byłoby miło, gdyby „i” w nawiasach zostało zastąpione wartością, która nie przeszła testu, ale dostajesz to, za co płacisz.
Jeśli potrzebujesz czegoś bardziej wyszukanego, zajrzyj do Runita i przetestuj, jak zasugerował Harlan.
stopifnot()
również wewnątrz .
Można to osiągnąć za pomocą stop
polecenia. To polecenie zatrzyma wykonywanie funkcji i wyświetli komunikat o błędzie. Na przykład możemy sprawdzić, czy zmienna something
to FALSE
:
if(something == FALSE){
stop("error message to print")
}
Podobnie warning
polecenie wyświetli ostrzeżenie (ale będzie kontynuować wykonywanie kodu).
if(something == FALSE){
warning("error message to print")
}
Oba są dostarczane przez podstawową R i nie wymagają żadnych pakietów do uruchamiania lub dołączania do pisania własnych funkcji. Wolę takie podejście do pisania kodu z mniejszą liczbą zależności, a ta składnia jest szeroko stosowana w tworzeniu pakietów. Jednak podobną funkcjonalność obsługuje pakiet „assertthat” z assert_that
funkcją, która została niedawno wydana jako część pakietu „tidyverse” Hadleya.