Kapitola 10 Iterace nad prvky atomických vektorů a seznamů
Casto je potreba provest nejakou operaci s kazdym prvkem atomickeho vektoru, seznamu apod. Vetsina programovacich jazyku k tomuto ucelu pouziva cyklus for
(viz oddil 7.2.1). R však nabízí dvě lepší řešení. Zaprvé, mnohé funkce jsou v R vektorizované, tj. pracují s vektorem po prvcích a vrátí vektor stejné délky, kde každý prvek je výsledkem aplikace dané funkce na odpovídající prvek původního vektoru. Příkladem takové funkce je např. funkce log()
. Druhou možností je použití funkce map()
a jí podobných z balíku purrr. Tyto funkce berou jako svůj vstup nejen data, ale také jinou (nevektorizovanou) funkci a aplikují ji na každý prvek dat.
Základní R sice poskytuje podobné funkce jako balík purrr, my se však zaměříme na funkce z balíku purrr, a to z několika důvodů: 1) jejich ovládání je jednodušší, 2) je kompatibilní s dalšími funkcemi ve skupině balíků tidyverse, 3) funkce usnadňují řešení problémů a ladění kódu a 4) umožňují snadnou paralelizaci pomocí balíku furrr.
V této kapitole se naučíte
- aplikovat nevektorizované funkce na prvky vektorů
- aplikovat funkce na sloupce tabulek
- zjednodušovat výsledků na atomické vektory
- filtrovat prvky vektorů
- redukovat prvky vektorů
- paralelizovat svůj výpočet
Před vlastní prací musíme načíst balík purrr:
library(purrr)