User Tools

Site Tools


Sidebar

Vít Syrovátka

Úvod do R


Teorie

Sekce Teorie je (a asi ještě dlouho bude) v průběžné výstavbě.

Software

Objekty v R

Cvičení

Data

Zápočet

Další zdroje

R for Data Science (2017) - excelentní tutorial Hadleyho Wickhama následující filozofii tidyversu
Data Processing with dplyr & tidyr - tutorial na úpravu dataframů pomocí tidyversových balíků dplyr a tidyr

r_intro:cs:theory:pipes

Pipes - roury

Roury do R zavedl v roce 2014 Stefan Milton Bache v balíku magrittr. Jejich účelem je zkrátit čas psaní příkazů, kód zpřehlednit a zefektivnit jeho údržbu.

“The magrittr (to be pronounced with a sophisticated french accent) is a package with two aims: to decrease development time and to improve readability and maintainability of code. Or even shortr: to make your code smokin' (puff puff)!” Stefan Milton Bache

Fungují tak, že výsledek předchozí operace pošlou jako první argument do následující funkce. Psaní kódu tedy mnohem věrněji kopíruje myšlenkový postup, než když postupně hnízdíme funkce do sebe.

Příklad lepší tisíce slov: chci spočítat průměrnou výšku mužů v náhodném vzorku naší populace.

# vytvorim nejprve dataframe:
jmena<- c("Radim", "Krystof", "Veronika", "Michal", "Ondrej", "Tereza", "Irena", "Martin", "Igor", "Kristina", "Katka")
vyska<- c(182, 183, 161, 180, 182, 170, 162, 189, 194, 175, 182)
noha<- c(44, 46, 37, 43, 42, 39, 37, 45, 48, NA, 42)
sex<- c("m", "m", "z", "m", "m", "z", "z", "m", "m", "z", "z")
 
miry<- data.frame(jmena, vyska, noha, sex)
 
# klasicky vypocet:
# -----------------
round(mean(miry$noha[miry$sex == "m"]))
> [1] 45
 
# vypocet s pipe:
# -----------------
library(dplyr) # pipes jsou importovany i balikem dplyr,
# v nemz jsou dalsi sikovne funkce, jako napriklad filter a select.
 
miry %>%
  select(noha) %>%
  filter(sex == "m") %>%
  mean %>%
  round
 
> noha 
>  45

Čteme-li zleva doprava, jak jsme zvyklí, při klasickém výpočtu nejprve zaokrouhlujeme, pak počítáme průměr z proměnné noha dataframu miry a nakonec vybíráme mužské pohlaví. Přesně naopak, než uvažujeme.

Pomocí roury píšeme v takovém pořadí, v jakém myslíme. Vezmi miry, vytáhni proměnnou noha, vyfiltruj muže, spočítej průměr a zaokrouhli.

Více o balíku magrittr zde.

r_intro/cs/theory/pipes.txt · Last modified: 2018/10/10 19:24 by vitek