inst/doc/base.R

## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 4.5,
  fig.align = "center"
)
options(tibble.print_min = 6, tibble.print_max = 6)

modern_r <- getRversion() >= "4.1.0"

## ----setup--------------------------------------------------------------------
library(purrr)
library(tibble)

## -----------------------------------------------------------------------------
means <- 1:4

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- lapply(means, rnorm, n = 5, sd = 1)
str(samples)

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- map(means, rnorm, n = 5, sd = 1)
str(samples)

## -----------------------------------------------------------------------------
means <- 1:4
sds <- 1:4

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- mapply(
  rnorm, 
  mean = means, 
  sd = sds, 
  MoreArgs = list(n = 5), 
  SIMPLIFY = FALSE
)
str(samples)

## -----------------------------------------------------------------------------
samples <- Map(function(...) rnorm(..., n = 5), mean = means, sd = sds)

## ---- eval = modern_r---------------------------------------------------------
samples <- Map(\(...) rnorm(..., n = 5), mean = means, sd = sds)

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- map2(means, sds, rnorm, n = 5)
str(samples)

## -----------------------------------------------------------------------------
ns <- 4:1

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- Map(rnorm, mean = means, sd = sds, n = ns)
str(samples)

## -----------------------------------------------------------------------------
set.seed(2020)
samples <- pmap(list(mean = means, sd = sds, n = ns), rnorm)
str(samples)

## -----------------------------------------------------------------------------
# type stable
medians <- vapply(samples, median, FUN.VALUE = numeric(1L))
medians

# not type stable
medians <- sapply(samples, median)

## -----------------------------------------------------------------------------
medians <- map_dbl(samples, median)
medians

## ---- fig.show='hide'---------------------------------------------------------
# for loop
for (s in samples) {
  hist(s, xlab = "value", main = "")
}

# lapply
invisible(lapply(samples, function(s) {
  hist(s, xlab = "value", main = "")
}))

## ---- fig.show='hide'---------------------------------------------------------
walk(samples, ~ hist(.x, xlab = "value", main = ""))

## -----------------------------------------------------------------------------
set.seed(2020)
means %>%
  map(rnorm, n = 5, sd = 1) %>%
  map_dbl(median)

## ---- eval = modern_r---------------------------------------------------------
set.seed(2020)
means |> 
  lapply(rnorm, n = 5, sd = 1) |> 
  sapply(median)

## ---- eval = modern_r---------------------------------------------------------
mtcars %>% 
  split(mtcars$cyl) %>% 
  map(\(df) lm(mpg ~ wt, data = df)) %>% 
  map(coef) %>% 
  map_dbl(1)

Try the purrr package in your browser

Any scripts or data that you put into this service are public.

purrr documentation built on Aug. 10, 2023, 9:08 a.m.