Czy R ma polecenie assert jak w Pythonie?
Instrukcja, która sprawdza, czy coś jest prawdą, a jeśli nie wypisuje podany komunikat o błędzie i kończy działanie
3 answers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 18:54:31
@ Nick:
Możesz kontrolować komunikat o błędzie, jeśli napiszesz funkcję o opisowej nazwie, aby przetestować warunek, który spowoduje błąd w twoim programie. Oto przykład:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
To wyświetli liczby od 1 do 8, a następnie wyświetli komunikat o treści
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 fantazyjnego, zajrzyj do Runit i przetestuj to, jak zasugerował Harlan.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-25 22:02:44
Można to osiągnąć za pomocą polecenia stop
. 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, polecenie warning
wyświetli ostrzeżenie (ale kontynuuje wykonywanie kodu).
if(something == FALSE){
warning("error message to print")
}
Oba są dostarczane przez base 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ą ilością zależności i ta składnia jest szeroko stosowany w tworzeniu pakietów. Jednak podobną funkcjonalność obsługuje pakiet "assertthat" z funkcją assert_that
, która została niedawno wydana jako część "tidyverse" Hadleya.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-05 15:23:48