Dokumentacja R
Zwięzła dokumentacja R oparta na przykładach. Przeczytaj o zagadnieniu, zobacz kod i przećwicz go na ścieżce Coddy.
Getting Started
- Co to jest R?Czym jest język programowania R, skąd się wziął, do czego się go używa i jak wypada w porównaniu z Pythonem, razem z pierwszą próbką kodu R do uruchomienia.
- Instalacja RJak pobrać R z CRAN i zainstalować go w systemie Windows, macOS albo Linux, a do tego RStudio, czyli środowisko, w którym prawie wszyscy piszą w R.
- Uruchamianie skryptu RWszystkie sposoby uruchamiania kodu R: interaktywna konsola, Rscript z wiersza poleceń, source() z wnętrza R oraz polecenia Run i Source w RStudio.
- Składnia RRdzeń składni R: przypisanie przez <-, wyrażenia i automatyczne wypisywanie, wywołania funkcji z nazwanymi argumentami oraz zasada, że wszystko jest wektorem.
- KomentarzeJak działają komentarze w R: symbol #, dlaczego R nie ma prawdziwego komentarza wielolinijkowego, skrót RStudio do komentowania bloków i co zawiera dobry komentarz.
Variables & Data
- ZmienneJak tworzyć zmienne w R strzałką <-, kiedy zamiast niej wymagane jest =, jakie są zasady nazewnictwa i jak wypisywać oraz usuwać zmienne przez ls() i rm().
- Typy danychAtomowe typy danych w R, czyli double, integer, character i logical, oraz różnica między typeof() a class() i zasady konwersji i koercji.
- LiczbyPraca z liczbami w R: numeric kontra integer, rodzina funkcji zaokrąglających, sqrt i log, operator modulo %% oraz wartości specjalne Inf i NaN.
- NapisyWszystko, czego potrzebujesz do pracy z tekstem w R: tworzenie napisów, łączenie przez paste i paste0, formatowanie przez sprintf oraz wyszukiwanie przez gsub, grepl i strsplit.
- Wejście i wyjścieJak działa wypisywanie w R: automatyczne wyświetlanie, print() kontra cat(), message(), oraz jak wczytać dane od użytkownika przez readline() i readLines().
Control Flow
- OperatoryWszystkie operatory, których potrzebujesz w R: arytmetyka razem z %% i %/%, wektorowe porównania, różnica między & a && oraz %in% do sprawdzania przynależności.
- If / ElseInstrukcje warunkowe w R: składnia if/else if/else, pułapka z nawiasem klamrowym, która psuje skrypty, wektorowe ifelse() dla całych wektorów i switch() do wyboru spośród wielu opcji.
- Pętle forJak działa pętla for w R: przechodzenie po wektorach i indeksach, zbieranie wyników bez pułapki rosnącego wektora, next i break oraz kiedy wywołanie wektorowe wygrywa z pętlą.
- Pętle whileJak działa pętla while w R: warunek sprawdzany na początku, repeat z break jako odpowiednik do-while w R, next i nawyki, które chronią przed nieskończonymi pętlami.
Data Structures
- WektoryWektory to podstawowa jednostka R, nawet pojedyncza liczba jest wektorem. Jak tworzyć je przez c(), indeksować (od 1!), filtrować maskami logicznymi i liczyć na całych wektorach naraz.
- ListyListy to kontener w R, który zmieści wszystko: różne typy, zagnieżdżone struktury, całe ramki danych. Kluczowa umiejętność to wiedzieć, kiedy [ zwraca mniejszą listę, a kiedy [[ zwraca sam element.
- MacierzeJak budować macierze przez matrix(), cbind() i rbind(), indeksować wiersze i kolumny oraz odróżniać mnożenie element po elemencie * od prawdziwego mnożenia macierzy %*%.
- CzynnikiCzynniki to sposób, w jaki R przechowuje dane kategoryczne: kody całkowite z etykietami tekstowymi. Jak je tworzyć, porządkować, ustawiać poziom odniesienia i jak ominąć pułapkę konwersji na liczby.
- Ramki danychRamka danych to arkusz kalkulacyjny R: nazwane kolumny równej długości, każda z własnym typem. Jak ją zbudować, obejrzeć przez str() i head() oraz dostać się do kolumn, wierszy i komórek.
- Brakujące wartości (NA)NA oznacza "nieznane" i rozprzestrzenia się na każde obliczenie, którego dotknie. Jak je wykryć przez is.na(), pominąć przez na.rm = TRUE oraz świadomie usunąć albo zastąpić.
Functions & Packages
- FunkcjeJak napisać funkcję w R: składnia function(x) { }, wartości zwracane, argumenty domyślne i nazwane, kropki ..., funkcje anonimowe i zasięg zmiennych.
- Rodzina applyRodzina apply, czyli apply, lapply, sapply, vapply, mapply i tapply, uruchamia funkcję na każdym elemencie danych. Zobacz, co robi każda z nich i kiedy po nią sięgnąć.
- Pipe (potoki)Co oznacza %>%, jak działa natywny pipe |> z bazowego R, jakie zasady i symbole zastępcze ma każdy z nich i którego używać w nowym kodzie.
- PakietyJak działają pakiety w R: instalacja z CRAN przez install.packages(), wczytywanie przez library(), require() kontra library(), pkg::fun() i pakiety, które warto znać.
- Katalog roboczyGdzie R szuka plików i jak nad tym panować: getwd(), setwd(), list.files(), czyszczenie środowiska przez rm(list = ls()) i dlaczego automatyczny zapis .RData to pułapka.
Data Wrangling
- dplyrCzym jest dplyr, jak go zainstalować i jak sześć podstawowych czasowników razem z potokiem zamienia chaotyczny kod na ramkach danych w czytelne potoki.
- Filtrowanie i podzbioryWszystkie sposoby na zostawienie potrzebnych wierszy i kolumn: maski logiczne w nawiasach, jednolinijkowe subset(), %in%, pułapki z NA oraz filter() i select() z dplyr.
- Nowe kolumny (mutate)Jak dodawać, przekształcać i usuwać kolumny ramki danych: df$new <- ..., ifelse() dla kolumn warunkowych, transform() oraz mutate() z case_when() z dplyr.
- Zmiana nazw kolumnZmiana nazw kolumn ramki danych w R: names() i colnames(), zmiana według pozycji i według nazwy, setNames(), rename() z dplyr i porządkowanie chaotycznych nagłówków z importu.
- SortowanieJak naprawdę działa sortowanie w R: sort() dla wektorów, dlaczego ramki danych potrzebują sztuczki z indeksami order(), sortowanie malejące i po wielu kolumnach oraz arrange() z dplyr.
- Grupowanie i podsumowanieWszystkie sposoby liczenia statystyk dla grup w R: zliczanie przez table(), tapply() dla jednej statystyki na grupę, formuła w aggregate() oraz group_by() z summarize() z dplyr.
- Merge i złączeniaŁączenie ramek danych po wspólnym kluczu: merge() dla złączeń wewnętrznych, lewych, prawych i pełnych, różne nazwy kluczy przez by.x/by.y, rodzina złączeń z dplyr i rbind() do doklejania wierszy.
- Pivot (przekształcanie)Format szeroki i długi oraz konwersja między nimi: pivot_longer() i pivot_wider() z tidyr, stare nazwy spread/gather i reshape() z bazowego R.
Import & Export
- Wczytywanie CSVJak zaimportować pliki CSV do R przez read.csv(): argumenty, które mają znaczenie, pułapka katalogu roboczego stojąca za większością błędów i kiedy warto sięgnąć po readr::read_csv.
- Wczytywanie ExcelaR sam nie otworzy plików .xlsx, lukę wypełnia pakiet readxl. Jak czytać arkusze, zakresy i nagłówki, zapisywać Excela z powrotem i omijać klasyczne pułapki importu z Excela.
- Zapis CSV i RDSEksport z R: write.csv z row.names = FALSE (zawsze), write.table dla innych separatorów i saveRDS do zapisu i odczytu bez utraty typów.
- DatyKlasa Date w R to liczba dni w przebraniu. Jak parsować napisy przez as.Date, formatować daty do wyświetlenia, odejmować je, tworzyć sekwencje i kiedy potrzebujesz POSIXct.
Plots & Charts
- plot()Jak działa funkcja plot() w R: typy wykresów, tytuły i etykiety osi, kolory, symbole punktów (pch), nakładanie warstw przez lines() i abline() oraz legendy.
- HistogramJak zrobić histogram w R przez hist(): dobór przedziałów (breaks), wygląd słupków, skala gęstości, nałożenie krzywej normalnej i wersja w ggplot2.
- Wykres pudełkowyJak zrobić wykres pudełkowy w R przez boxplot(): odczyt pudełka i wąsów, formuła do porównywania grup, styl i liczby, które stoją za wykresem.
- Wykres punktowyJak zrobić wykres punktowy w R: narysuj dwie zmienne przez plot(), dodaj linię regresji przez abline(lm()), wygładź przez lowess() i zbuduj macierz wykresów pairs().
- Wykres słupkowyJak zrobić wykres słupkowy w R przez barplot(): z nazwanego wektora lub table(), słupki grupowane i skumulowane z macierzy, styl oraz geom_col a geom_bar.
- ggplot2Jak działa ggplot2: model dane + aes() + geom, mapowanie a ustawianie estetyk, labs(), facet_wrap(), motywy i zapisywanie wykresów przez ggsave().
Statistics
- Statystyki opisoweJak podsumować dane w R przez mean(), median(), sd(), var(), summary() i quantile(): co liczy każda funkcja, szczegół n−1 w sd() i dlaczego mode() w R to pułapka.
- KorelacjaZmierz przez cor(), jak dwie zmienne zmieniają się razem, sprawdź przez cor.test(), czy zależność jest prawdziwa, i przejrzyj wiele zmiennych naraz w macierzy korelacji.
- Test tWykonaj test t dla jednej próby, dwóch prób i prób sparowanych przez t.test() i, co naprawdę ważne, odczytaj każdą linię wyniku: t, df, p-value, przedział ufności.
- ANOVAPorównaj średnie trzech lub więcej grup za pomocą aov(), odczytaj tabelę ANOVA komórka po komórce i sprawdź przez TukeyHSD(), które grupy naprawdę się różnią.
- Regresja liniowaDopasuj regresję przez lm(), odczytaj każdy blok summary() (współczynniki, błędy standardowe, p-value, R-kwadrat, statystykę F) i przewiduj wartości przez predict().
- Regresja logistycznaModeluj wyniki typu tak/nie przez glm(family = binomial): odczytaj summary, zamień współczynniki log-odds na ilorazy szans przez exp() i poprawnie uzyskaj przewidywane prawdopodobieństwa.
- Przedziały ufnościWyznacz przedziały ufności dla średnich, proporcji i współczynników modelu przez t.test(), prop.test() i confint(), zrozum, co naprawdę znaczy "95% ufności" i jak liczebność próby wpływa na szerokość.
- Liczby losoweGeneruj losowe dane przez rnorm(), runif(), rbinom() i sample(), zapewnij powtarzalność przez set.seed() i rozszyfruj system nazw d/p/q/r dla rozkładów w R.