Skip to content

fontikar/purrr

This branch is 5 commits ahead of, 22 commits behind tidyverse/purrr:main.

Folders and files

NameName
Last commit message
Last commit date
Aug 5, 2024
Aug 15, 2024
Aug 15, 2024
Nov 1, 2023
Jan 5, 2023
Aug 1, 2023
Aug 15, 2024
Nov 1, 2022
Aug 24, 2024
Jul 15, 2024
Jul 15, 2024
Jul 17, 2024
Nov 1, 2023
Nov 1, 2023
Aug 15, 2024
Aug 15, 2024
Aug 15, 2024
Aug 15, 2024
Jul 26, 2023
Nov 1, 2022
Apr 16, 2020
Nov 1, 2022
Sep 16, 2022
Aug 8, 2023
Aug 15, 2024

Repository files navigation

purrr

CRAN_Status_Badge Codecov test coverage R-CMD-check

Overview

purrr enhances R’s functional programming (FP) toolkit by providing a complete and consistent set of tools for working with functions and vectors. If you’ve never heard of FP before, the best place to start is the family of map() functions which allow you to replace many for loops with code that is both more succinct and easier to read. The best place to learn about the map() functions is the iteration chapter in R for Data Science.

Installation

# The easiest way to get purrr is to install the whole tidyverse:
install.packages("tidyverse")

# Alternatively, install just purrr:
install.packages("purrr")

# Or the the development version from GitHub:
# install.packages("pak")
pak::pak("tidyverse/purrr")

Cheatsheet

Usage

The following example uses purrr to solve a fairly realistic problem: split a data frame into pieces, fit a model to each piece, compute the summary, then extract the R2.

library(purrr)

mtcars |> 
  split(mtcars$cyl) |>  # from base R
  map(\(df) lm(mpg ~ wt, data = df)) |> 
  map(summary) |>
  map_dbl("r.squared")
#>         4         6         8 
#> 0.5086326 0.4645102 0.4229655

This example illustrates some of the advantages of purrr functions over the equivalents in base R:

  • The first argument is always the data, so purrr works naturally with the pipe.

  • All purrr functions are type-stable. They always return the advertised output type (map() returns lists; map_dbl() returns double vectors), or they throw an error.

  • All map() functions accept functions (named, anonymous, and lambda), character vector (used to extract components by name), or numeric vectors (used to extract by position).

About

A functional programming toolkit for R

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • R 87.9%
  • C 12.1%