Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
pakietassert [2015/07/01 15:09] t.zoltak [Ciągi znaków] |
pakietassert [2015/07/01 15:33] t.zoltak [Przewodnik po funkcjach pakietu assertive] |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
======Przewodnik po funkcjach pakietu assertive====== | ======Przewodnik po funkcjach pakietu assertive====== | ||
+ | Warto zapoznać się z winietkami od pakietu, autorstwa Richarda Cottona: | ||
+ | |||
+ | * [[http://cran.at.r-project.org/web/packages/assertive/vignettes/introduction.html|Introduction]]. | ||
+ | * [[http://cran.at.r-project.org/web/packages/assertive/vignettes/checking_function_inputs.html|Checking function inputs]]. | ||
+ | * [[http://cran.at.r-project.org/web/packages/assertive/vignettes/checklists.html|Checklists of checks]] | ||
=====Typy funkcji===== | =====Typy funkcji===== | ||
Linia 76: | Linia 81: | ||
Jeśli to czytasz, zapoznaj się z funkcją **is_if_conditon()**! | Jeśli to czytasz, zapoznaj się z funkcją **is_if_conditon()**! | ||
+ | |||
+ | **Uwaga:** Wszystkim opisanym poniżej funkcjom, z wyjątkiem [assert_]is_if_condition(), nie przeszkadza, jeśli obiekty zawierają pojedynczy brak danych (NA, lub wartości o podobnym znaczeniu: NaN, Inf, -Inf). Jeśli takiego przypadku nie dopuszczamy, należy go oddzielnie obsłużyć. | ||
^//dopełnienie// ^ is, are ^ assert_is ^ assert_all_are ^ assert_any_are | | ^//dopełnienie// ^ is, are ^ assert_is ^ assert_all_are ^ assert_any_are | | ||
Linia 223: | Linia 230: | ||
|_writable_file[s] | ::: | ::: | ::: | ::: | | |_writable_file[s] | ::: | ::: | ::: | ::: | | ||
=====Funkcje weryfikujące związane z połączeniami ('connections')===== | =====Funkcje weryfikujące związane z połączeniami ('connections')===== | ||
+ | |||
+ | ^//dopełnienie// ^ is, are ^ assert_is ^ assert_all_are ^ assert_any_are | | ||
+ | |_bzfile_connection | + | - | + | + | | ||
+ | |_connection | ::: | ::: | ::: | ::: | | ||
+ | |_fifo_connection | ::: | ::: | ::: | ::: | | ||
+ | |_file_connection | ::: | ::: | ::: | ::: | | ||
+ | |_gzfile_connection | ::: | ::: | ::: | ::: | | ||
+ | |_incomplete_connection | ::: | ::: | ::: | ::: | | ||
+ | |_open_connection | ::: | ::: | ::: | ::: | | ||
+ | |_pipe_connection | ::: | ::: | ::: | ::: | | ||
+ | |_readable_connection | ::: | ::: | ::: | ::: | | ||
+ | |_socket_connection | ::: | ::: | ::: | ::: | | ||
+ | |_stderr | ::: | ::: | ::: | ::: | | ||
+ | |_stdin | ::: | ::: | ::: | ::: | | ||
+ | |_stdout | ::: | ::: | ::: | ::: | | ||
+ | |_terminal_connection | ::: | ::: | ::: | ::: | | ||
+ | |_text_connection | ::: | ::: | ::: | ::: | | ||
+ | |_unz_connection | ::: | ::: | ::: | ::: | | ||
+ | |_url_connection | ::: | ::: | ::: | ::: | | ||
+ | |_writable_connection | ::: | ::: | ::: | ::: | | ||
+ | |_xzfile_connection | ::: | ::: | ::: | ::: | | ||
=====Funkcje weryfikujące związane ze środowiskiem ('enviroment')===== | =====Funkcje weryfikujące związane ze środowiskiem ('enviroment')===== | ||
+ | |||
+ | ^//dopełnienie// ^ is, are ^ assert_is ^ assert_all_are ^ assert_any_are | | ||
+ | |_batch_mode | + | + | - | - | | ||
+ | |_binding_locked | ::: | ::: | ::: | ::: | | ||
+ | |_comma_for_decimal_point | ::: | ::: | ::: | ::: | | ||
+ | |_debugged | ::: | ::: | ::: | ::: | | ||
+ | |_existing | + | - | + | + | | ||
+ | |_interactive | + | + | - | - | | ||
+ | |_loaded | ::: | ::: | ::: | ::: | | ||
+ | |_period_for_decimal_point | ::: | ::: | ::: | ::: | | ||
=====Funkcje weryfikujące związane z typem i możliwościami systemu===== | =====Funkcje weryfikujące związane z typem i możliwościami systemu===== | ||
- | =====Inne funkcje===== | ||
- | =====Argumenty, które powinny być jednoelementowe===== | ||
- | |||
- | **Uwaga:** Wszystkim opisanym poniżej funkcjom nie przeszkadza, jeśli obiekty zawierają pojedynczy brak danych (NA, lub wartości o podobnym znaczeniu: NaN, Inf, -Inf). Jeśli takiego przypadku nie dopuszczamy, należy go oddzielnie obsłużyć. | ||
- | |||
- | * **use_first()**: | ||
- | * Funkcja zwraca pierwszy element obiektu, a jeśli miał ich więcej, dodatkowo pluje ostrzeżeniem. | ||
- | * Uwagi: | ||
- | * **Jeśli przekazywany obiekt jest listą**, to zostanie zwrócony jej pierwszy element, czym by nie był. Także o wyświetleniu lub nie ostrzeżenia decyduje długość samej listy (a nie struktura jej elementów). | ||
- | * **is_scalar()**: | ||
- | * Sprawdza, czy obiekt jest skalarem (tj. długości jeden). | ||
- | * Funkcje **[assert_]is_a[n]_[...]**: | ||
- | * Funkcje testują, czy obiekt jest danego typu i **jednocześnie** jest skalarem (tj. długości jeden). | ||
- | * Funkcje 'is_a_[...]' zwracają, czy warunki są spełnione. | ||
- | * Funkcje 'assert_is_a_[...]' zwracają błędy, jeśli warunki nie są spełnione. | ||
- | * Typy, które można testować obejmują: | ||
- | * [assert_]is_a_bool - typ //logical//. | ||
- | * [assert_]is_an_empty_string - pusty ciąg znaków (''). | ||
- | * [assert_]is_a_complex - typ //complex// (np. //1i//). | ||
- | * [assert_]is_an_integer - typ //integer//. | ||
- | * [assert_]is_a_non_empty_string - niepusty ciąg znaków | ||
- | * [assert_]is_a_number - typ //numeric// (//integer// lub //double//). | ||
- | * [assert_]is_a_raw - typ //raw// (takie dziwne coś, p. //?raw//). | ||
- | * [assert_]is_a_string - ciąg znaków. | ||
- | |||
- | ====Testowanie złożonych typów==== | ||
- | |||
- | ====Testowanie możliwości środowiska==== | ||
* Funkcje **[assert_]r_has_[...]_capabilities**. | * Funkcje **[assert_]r_has_[...]_capabilities**. | ||
Linia 267: | Linia 277: | ||
* [assert_]is_unix(); | * [assert_]is_unix(); | ||
* [assert_]is_windows(); | * [assert_]is_windows(); | ||
+ | =====Inne funkcje===== | ||
+ | |||
+ | * **use_first()**: | ||
+ | * Funkcja zwraca pierwszy element obiektu, a jeśli miał ich więcej, dodatkowo pluje ostrzeżeniem. | ||
+ | * Uwagi: | ||
+ | * **Jeśli przekazywany obiekt jest listą**, to zostanie zwrócony jej pierwszy element, czym by nie był. Także o wyświetleniu lub nie ostrzeżenia decyduje długość samej listy (a nie struktura jej elementów). | ||
+ | * **DIM()**: | ||
+ | * Funkcja zwraca liczbę wymiarów lub długość (jeśli obiekt nie ma wymiarów). | ||
+ | * **n_elements()**: | ||
+ | * Funkcja zwraca liczbę „atomowych” elementów obiektu (np. w przypadku macierzy - liczba komórek, w przypadku listy - długość wektora powstającego przez wywołanie na liście unlist()). | ||
+ | * **coerce_to()**: | ||
+ | * Funkcja przeprowadza rzutowanie typów (w sposób nieco bardziej bezpieczny niż funkcje rodziny as.[...]). | ||
+ | |||
+ |