Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
208 lines (140 sloc) 4.86 KB
---
title: "Touring tidyverse"
subtitle: "purrr"
author: "Misha Balyasin"
date: "2018/10/23"
output:
xaringan::moon_reader:
lib_dir: libs
css: [default, robot, robot-fonts]
nature:
highlightStyle: github
highlightLines: true
countIncrementalSlides: false
---
```{r setup, include=FALSE}
options(htmltools.dir.version = FALSE)
```
background-image: url(http://r4ds.had.co.nz/diagrams/data-science.png)
background-size: 800px
Slides, markdown and code - https://github.com/romatik/touring_the_tidyverse
---
# Plan of talks
.pull-left[
## Initial
1. Wrangle: tidyr
2. Wrangle: dplyr
3. Wrangle: lubridate, hms, blob, forcats, stringr
4. Program: purrr + glue
5. Program: tidyeval
6. Model: rsample, tidyposterior, recipes, broom
7. Beyond tidyverse (tibbletime, tidytext, janitor)
]
--
.pull-right[
## Current
1. Wrangle: tidyr -- `r emo::ji("check")`
2. Wrangle: dplyr -- `r emo::ji("check")`
3. ~~Wrangle: lubridate, hms, blob, forcats, stringr~~
4. Program: purrr ~~and glue~~
5. Program: tidyeval
6. Model: rsample, tidyposterior, recipes, broom -- `r emo::ji("construction")`
7. Beyond tidyverse (tibbletime, tidytext, janitor)
]
---
background-image: url(https://raw.githubusercontent.com/tidyverse/purrr/master/man/figures/logo.png)
background-size: 100px
background-position: 90% 6%
# purrr
is a "...complete and consistent functional programming toolkit for R". It draws inspiration from multiple languages (Haskell, Scala, Javascript, `rlist` package). From vignette:
> However, the goal of purrr is not to try and simulate a purer functional programming language in R; we don’t want to implement a second-class version of Haskell in R. The goal is to give you similar expressiveness to an FP language, while allowing you to write code that looks and works like R.
---
# Why purrr
1. API responses (JSON, XML or any list-like alternatives).
2. Make lists less `r emo::ji("ghost")`.
3. Efficient abstraction over `for` loops.
4. Putting all `*apply` functions from base R into more principled framework.
5. Gateway drug to functional programming and all the goodies to go along with it (e.g., parallel programming).
6. Split-Apply-Combine paradigm.
7. List-columns.
8. Plays nicely with pipe.
---
# Initial commit of purrr
First commit: `2014-11-30 00:33` by Hadley Wickham.
---
# Current state
2. Current version - `r packageVersion("purrr")`.
3. https://github.com/tidyverse/purrr
4. Developed by __Lionel Henry__, Hadley Wickham.
5. 700+ commits by 46 contributors.
---
background-image: url(https://raw.githubusercontent.com/tidyverse/purrr/master/man/figures/logo.png)
background-size: 100px
background-position: 90% 6%
# purrr
Covering today:
1. Working with iteration in principled and safe manner.
1. Functional programming.
1. Adverbs and mappers.
1. Utilities for working with lists.
```{r purrr_api, echo = FALSE}
length(getNamespaceExports("purrr"))
```
---
# Mapping
Following slides are from the Charlotte Wickham workshop that you can download here:
<a href="https://www.dropbox.com/sh/062xjv35izc2a92/AAAnC-nzToR1rPekDZipRJSLa?dl=0">bit.ly/purrr-rstudioconf</a>
---
background-image: url(https://raw.githubusercontent.com/romatik/touring_the_tidyverse/master/img/map.png)
background-size: 100%
# map
---
background-image: url(https://raw.githubusercontent.com/romatik/touring_the_tidyverse/master/img/map2.png)
background-size: 100%
# map2
---
background-image: url(https://raw.githubusercontent.com/romatik/touring_the_tidyverse/master/img/pmap.png)
background-size: 100%
# pmap
---
background-image: url(https://raw.githubusercontent.com/romatik/touring_the_tidyverse/master/img/walk.png)
background-size: 100%
# walk
---
background-image: url(https://raw.githubusercontent.com/romatik/touring_the_tidyverse/master/img/invoke_map.png)
background-size: 100%
# invoke_map
---
# Functional programming
accumulate
accumulate_right
compose
partial
reduce
reduce_right
reduce2
reduce2_right
negate
---
# Adverbs and mappers
safely
possibly
quietly
auto_browse
lifting
as_mapper
---
# Utilities
Too many to list
---
# Resources
1. `purrr` tutorial by Jenny Brian - https://jennybc.github.io/purrr-tutorial/index.html
1. RStudio cheatsheet - https://github.com/rstudio/cheatsheets/blob/master/purrr.pdf
1. Parallel processing with `purrr` and `future` - https://www.jottr.org/2017/06/05/many-faced-future/ (also see https://github.com/DavisVaughan/furrr)
1. `purrr` workshop by Charlotte Wickham - https://www.dropbox.com/sh/062xjv35izc2a92/AAAnC-nzToR1rPekDZipRJSLa?dl=0
1. "Master the `tidyverse`" by Garett Grolemund - https://github.com/rstudio-education/master-the-tidyverse/.
1. `purrr::partial` example by Tyler Bradly - https://tbradley1013.github.io/2018/10/01/calculating-quantiles-for-groups-with-dplyr-summarize-and-purrr-partial/
---
# Contacts
http://mishabalyasin.com/
Slides, markdown and code - https://github.com/romatik/touring_the_tidyverse