Programowanie w R dla średnio zaawansowanych

  • Wymagania. Dobra znajomość R.
  • Czas. Spotkania indywidualne: 10-15 tygodni. Szkolenia dla grup: 3 dni po 6 godzin.
  • Koszt. Spotkania indywidualne: 15 x 240 zł. Szkolenia: do ustalenia.
kurs zaawansowane programowanie w r

Jeśli R używasz nie od dziś i szukasz materiałów do dalszego rozwoju, nie jest łatwo je znaleźć. Cóż, najbardziej opłaca się tworzyć kursy z podstaw, bo najwięcej osób z nich korzysta. Na tym szkoleniu przedstawiam narzędzia, które sprawią, że Twoja praca w R będzie znacznie bardziej efektywna. W szczególności, staniesz się lepszym PROGRAMISTĄ.

Niektórzy twierdzą, że aby się przekonań, czy ktoś wie coś więcej o programowaniu. wystarczy spytać o testy jednostkowe. Jeśli w odpowiedzi usłyszymy: „nigdy ich nie używałem”, jest jasne, że dana osoba nie pisała jeszcze nic „na poważnie”. Oczywiście R jest specyficznym językiem (narzędziem), ale w końcu dojdziesz do momentu, w którym np. inni będą korzystać z Twoich skryptów. Bez testów jednostkowych nie dość, że ciężko napisać dłuższy działający kod, to trudno też dać komuś gwarancję, że zadziała na jego danych.

Kolejny stopień wtajemniczenia to stworzenie swojego pakietu. Jest to szczególnie przydatne w rozwoju naukowym, ale też w firmach, na użytek wewnętrzny. Jeśli przypadkiem szukasz istotnych genów na łańcuchach DNA, może zainteresować Cię mój pakiet (żart).

Oprócz tego jest jeszcze parę technik, które musi znać każdy programista: debugging (szukanie błędów w kodzie), profilowanie (dlaczego ten kod jest taki wolny i jak go przyspieszyć?) czy tematy związane z obiektowością. Najwyższy czas, żeby się tego nauczyć.

Czego się nauczysz?

Zacznę od przedstawienia paru bardziej zaawansowanych rozwiązań dostępnych w R, które bardzo przydają się w analizie danych, gdy np. chcemy wykonać tę samą operację na wielu kolumnach. Ponadto, jeśli termin programowanie funkcyjne nie jest Ci znany, zobaczysz, że wiesz o nim całkiem sporo.

Wytłumaczę, jak optymalnie szukać błędów w swoim kodzie oraz jak go przyspieszyć, szukając tzw. wąskich gardeł. R ma naprawdę rozwinięte narzędzia do tych celów. Zobaczymy też, jak łatwo sprawić, by pewne obliczenia odbywały się równolegle — bo przecież Twój proces ma na pewno więcej rdzeni.

Obiektowość w R jest zadziwiająco bogata. Można skorzystać z kilku systemów, mniej lub bardziej rygorystycznych. Wytłumaczę, o co w tym chodzi i do czego ta wiedza może się przydać. Jeśli trudno było Ci wyciągnąć pewne informacje z obiektów zwracanych przez funkcje, to już tej trudności mieć nie będziesz.

Przy pomocy pakietu testthat napiszemy pierwsze testy jednostkowe. Przyda się to w pisaniu własnych funkcji, co do których chcesz mieć pewność, że będą działać bez błędów.

Na koniec stworzymy własny pakiet. Pokażę, jak umieścić go na głównym serwerze R, żeby każdy mógł go zainstalować. Jest to dość wymagające, ale nic bardziej nie poprawia samopoczucia, niż świadomość, że inni użytkownicy R będą pisali install.packages(„mój_pakiet”).

Uwaga. Większość tematów poruszanych na kursie nie jest ze sobą związanych, także możemy wybrać tylko te, które Cię interesują.

Program

1. Funkcje przyspieszające analizę danych

- Where i across
- Funkcje anonimowe
- Map i programowanie funkcyjne
- Operacje na wierszach (rowwise)
- Zagnieżdżone ramki danych (nest)

2. Debbuging i profilowanie

- Czym jest debugging i jak to zrobić w R?
- Obsługa wyjątków
- Programowanie defensywne
- Czym jest profilowanie i jak to zrobić w R?
- Obliczenia równoległe

3. Programowanie obiektowe

- Czym jest obiektowość i czy warto coś więcej o tym wiedzieć?
- Podstawowe pojęcia: polimorfizm, klasa, metoda, hierarchiczność
- Jak wygląda obiektowość w R?
- Systemy S3, S4 i R6

4. Testy jednostkowe

- Dlaczego to jest takie ważne?
- Pakiet testthat
- Jak pisać dobre testy
?

5. Tworzenie własnych pakietów

- Po co to robić?
- W zasadzie to co to jest pakiet?
- Pliki description i namespace
- Dokumentacja i winieta
- Testowanie
- Kontrola wersji, GitHub
- Wysłanie do CRAN

Co dalej?

Rozwój R jest bardzo szybki. Warto być na bieżąco z nowymi pakietami i funkcjami. Polecam regularnie przeglądać np. poniższe strony: