Úvod do programovacího jazyka R – pro úplné začátečníky

Krátce o R – proč a jak začít

R je programovací jazyk vyvinutý speciálně pro statistiku, analýzu dat a vizualizace. Jeho syntax vychází z jazyků S a Scheme. Podobně jako Python je čitelný a vhodný pro začátečníky, ale není na Pythonu založený. R i Python jsou oba velmi oblíbené pro práci s daty, přičemž každý má své specifické výhody.

R disponuje rozsáhlým ekosystémem balíčků, které rozšiřují jeho funkce od základní statistiky až po strojové učení. Je to ideální nástroj pro výuku, psaní reportů a publikací, protože začátečníci mohou rychle vidět výsledky, jako jsou grafy, bez složitého programování.

Komentování a spouštění příkazů – polopatě

Značka # (hash) slouží k „zakomentování“ řádku, což znamená, že program si takového řádku nevšímá. V RStudiu bývá tento text standardně zelený.

# Tento řádek se NEprovede
# getwd()

# Tento řádek se provede
getwd() # Zjistí aktuální pracovní prostor
#> [1] "C:/Users/Halada/R/uvod_do_jazyka_R"

Příkaz spouštíme označením řádku a stiskem Ctrl + Enter nebo kliknutím na tlačítko Run. Pro časté ukládání skriptu používejte zkratku Ctrl + S. Pokud se v konzoli objeví znak +, R čeká na dokončení příkazu (např. chybí závorka); to lze napravit doplněním nebo stisknutím Esc.

Instalace a načítání balíčků

Knihovnou (balíčkem) se rozumí soubor předem připravených funkcí. Instalaci provádíme jen jednou, ale balíček musíme načíst pomocí library() při každém spuštění skriptu.

# Instalace vybraných balíčků
install.packages("tidyverse") # základ pro moderní práci s daty
install.packages("here")      # bezpečné cesty k souborům
install.packages("janitor")   # čištění dat
install.packages("skimr")     # rychlý přehled dat
# Načtení základních balíčků na začátku skriptu
library(tidyverse)
library(here)

Objekty a přiřazování

Objekt v R obsahuje data a informaci, jak s nimi pracovat. Příkladem jsou čísla, vektory, tabulky (data.frame) nebo modely. Objekty pojmenováváme bez diakritiky a dbáme na velikost písmen, protože R je case-sensitive. Přiřazování se provádí operátorem <- (Alt + -).

Příklad inkrementace

knedlik <- 4
svickova <- 1
talir <- knedlik + svickova # Výsledek je 5
talir <- talir + svickova + knedlik # Výsledek je 10
talir
#> [1] 10

Moderní Pipe a OOP

Nativní pipe |> (od verze R 4.1+) umožňuje psát čitelný kód jako posloupnost kroků. V R má každý objekt svou třídu a funkce jako summary() se chovají podle této třídy.

# Ukázka vytvoření tabulky a lineárního modelu
auta <- data.frame(
  model = c("Škoda Octavia", "VW Golf", "BMW 3"),
  cena = c(850000, 720000, 1450000),
  spotreba = c(6.2, 5.8, 7.1)
)

summary(auta) # Statistický přehled tabulky
#>     model                cena            spotreba    
#>  Length:3           Min.   : 720000   Min.   :5.800  
#>  Class :character   1st Qu.: 785000   1st Qu.:6.000  
#>  Mode  :character   Median : 850000   Median :6.200  
#>                     Mean   :1006667   Mean   :6.367  
#>                     3rd Qu.:1150000   3rd Qu.:6.650  
#>                     Max.   :1450000   Max.   :7.100
model <- lm(spotreba ~ cena, data = auta) # Lineární model
summary(model) # Statistiky modelu
#> 
#> Call:
#> lm(formula = spotreba ~ cena, data = auta)
#> 
#> Residuals:
#>        1        2        3 
#>  0.09869 -0.08112 -0.01758 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)  
#> (Intercept) 4.662e+00  2.472e-01  18.857   0.0337 *
#> cena        1.694e-06  2.342e-07   7.233   0.0875 .
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.129 on 1 degrees of freedom
#> Multiple R-squared:  0.9812, Adjusted R-squared:  0.9625 
#> F-statistic: 52.32 on 1 and 1 DF,  p-value: 0.08746

Otázky k opakování

  • Proč je v objektu talir hodnota 10? Protože k původnímu součtu 5 byla inkrementací přičtena další hodnota.
  • Jaký je rozdíl mezi instalací a načtením? Instalace stáhne balíček trvale, načtení ho zpřístupní pro aktuální práci.
  • Co znamená znak + v konzoli? Signalizuje nedokončený příkaz, který je třeba doplnit nebo zrušit klávesou Esc.
  • Proč nepoužívat diakritiku? Kvůli stabilitě kódu a prevenci chyb při sdílení.
  • Co je to objekt? Struktura spojující data s instrukcemi, jak s nimi nakládat.