Jak można „zgłosić” błąd w R? Mam funkcję, która pobiera ramkę danych i niektóre nazwy kolumn i robi z nimi rzeczy. Jeśli kolumny nie istnieją, chcę, aby funkcja zatrzymała się i zatrzymała wszystkie zależne od niej funkcje.
Mam spojrzał na recover
i browse
a traceback
, ale dobrze, że wydawała się być blisko, ale nie to, czego szukam.
r
error-handling
forkandwait
źródło
źródło
Odpowiedzi:
Zobacz
help(tryCatch)
:a później w sekcji „Zobacz też”:
więc prawdopodobnie chcesz
stop
.źródło
traceback()
po błędzie, aby zobaczyć, co poszło nie tak). Korzystaniestop
zerror
argumentemtryCatch
będzie bałagan śladu. Jednakfinally
argument pozwoli na rzucenie dodatkowej wiadomości i sprawi, że śledzenie będzie przydatne. Niezupełnie na temat, ale czuję, że jest na tyle ważny, że uzasadnia kilka minusów i groźbę umiarkowania, która wyrzuci ten komentarz z okna. :-)Prosty przykład:
źródło
Poza podstawowymi funkcjami, o których wspomina Dirk:
Pakiet R.oo dodatkowe funkcje obsługi wyjątków, w tym funkcji rzut (), która jest bardzo przydatna. Możesz łapać wyjątki za pomocą zwykłych funkcji try lub trycatch:
Możesz przeczytać więcej na ten temat tutaj: http://www1.maths.lth.se/help/R/R.oo/
źródło
plot
wykreśla funkcję,try
stop
warn
wszystko działa zgodnie z oczekiwaniami i prawie wszystko, co chcę zrobić, to jedna linijka.W rzeczywistości funkcja
stopifnot
jest bardzo wygodna do implementacji kontroli poprawności w kodzie. Przyjmuje kilka wyrażeń logicznych i zwraca błąd, jeśli którekolwiek z nich ma wartość false.Przykład: Aby sprawdzić, czy kolumna „c” istnieje w ramce danych „df”:
Spowoduje to wyświetlenie następującego błędu:
źródło
assert(...)
...Możesz sprawdzić, czy kolumna istnieje i zrobić, co chcesz.
Załóżmy, że
data.frame
nazwanadf1
i sprawdzona jest kolumnacol1
:lub
Na przykład
źródło