Error

Autor

Jacek Bojarski

Zmodyfikowano

December 23, 2024

Jak się nie wywrócisz, to się nie nauczysz.
– Bogumił Kobiela w filmie ‘Wojna domowa’

Wspaniały aktor, rewelacyjny serial z epoki PRL-u z plejadą gwiazd:

Popełnianie błędów to nieodzowny element w procesie uczenia się. Błędy są pouczające. Powodują między innymi, że uczulamy się na poprawność prowadzenia obliczeń, analiz oraz prezentacji wyników. W pracy będziemy ich unikać - ale musimy wiedzieć czego unikać. I tu koło się zamyka. Musimy wiedzieć o możliwym błędzie by móc go uniknąć. Jeden ze sposobów to jego popełnienie. Inny – zapoznanie się listą przypadków typowych błędów.

Praktycznie wszystkie błędy na które się natkniecie opisane są w zasobach Internetu. W tym miejscu zwracać będziemy uwagę tylko na te błędy i niepoprawności różnego kalibru, które dopadać będą Państwa podczas zajęć. Lista będzie rozwijana.

Dynamiczne raportowanie

Na tych zajęciach raczej nie będziecie tworzyć dynamicznych dokumentów, ale zachęcam Was to samodzielnego ich tworzenia. Zasady są proste i w mig możecie opanować niezbędnie polecenia. Za to na pewno będzie wypełniać bloki R-owskie w przygotowanych formularzach. To działanie również wymaga poprawności.

Instalacja pakietu

Wywoływanie instalacji pakietu w dokumencie dynamicznym

``` {{r}}
install.packages('package name')
```

jest błędem. Dlaczego? Zanim ostatecznie opracujemy dokumentację w R-Markdown, R-Notebook czy Quarto będziemy tenże dokument wielokrotnie parsować, czasami nawet dziesiątki–setki razy, a to oznacza, że tyle razy będziemy instalować pakiet. Po co? Pakiet instaluje się raz, potem ewentualnie się go uaktualnia. Ale są to procesy jednorazowe.

Polecenie View

Wywoływanie przeglądarki danych w dokumencie dynamicznym

``` {{x}}
View(`R-object`) # `R-object` pewny objekt R-owski
```

Z jednej strony funkcja View będzie próbowała otworzyć nowe okno z interaktywnym widokiem dla R-object, z drugiej strony parser Markdowna będzie próbował przetworzyć tą cześć dokumentu. Wtedy może wystąpić błąd. Nie wywołujmy tego typu funkcji w przygotowywanych raportach.

Załadunek pakietów

W przygotowanym skrypcie jeden z pierwszych bloków-R przeznaczony jest do poleceń ładujących wymagane pakiety:

Do niedawna:

Teraz:

``` {{r}}
#| label: pakiety
```

Ładowanie pakietów w innych blokach będzie traktowane jako błąd.

Skrypt

R to program narzędzie dla inżynierów matematyki a zatem i dla inżynierów danych. W większości przypadków korzystać będzie z gotowych funkcji, które będziecie łączyć ze sobą jak klocki. Co ważne funkcje te, to implementacja funkcji, które poznaliście na zajęciach z algebry, analizy, teorii grafów, rachunku prawdopodobieństwa, geometrii czy bazach danych. A teraz na statystyce. To inny rodzaj programowania ale i tak tworzone skrypty wymagają porządku i poprawności.

Puste polecenia

Często w procesie tworzenia wplatamy w kod polecenia, które może są w jakiś sposób pomocne na tym etapie ale już w finalnym produkcie są zbędne i generalnie zaśmiecają kod. Zdarza się, że część pustych poleceń na moment wykonania zajmuje duży obszar pamięci a ponadto wydłuża czas wykonania kodu. Przykład:

#' dany jest ciąg liczb przypisany do zmiennej x 
#' oblicz medianę 
x 
mean(x) 
sort(x) 
median(x) 
sum(x)

Linie: 3, 4, 5, 7 są zbędne. I ze względu na przejrzystość kodu będą traktowane jako błąd.

Załadunek pakietów

Podobnie jak to jest w innych programach, polecenia ładujące niezbędne pakiety umieszczamy w pierwszych liniach kodu. Oczywiście nie będzie błędu syntaktycznego, gdy taki kod usadowimy w głębi kodu i to dowolną liczbę razy. Ale jest to niepoprawne i nie należy tak postępować.