R/future-imap.R

Defines functions future_imap_dfc future_imap_dfr future_imap_raw future_imap_lgl future_imap_int future_imap_dbl future_imap_chr future_imap

Documented in future_imap future_imap_chr future_imap_dbl future_imap_dfc future_imap_dfr future_imap_int future_imap_lgl future_imap_raw

#' Apply a function to each element of a vector, and its index via futures
#'
#' These functions work exactly the same as [purrr::imap()] functions,
#' but allow you to map in parallel.
#'
#' @inheritParams purrr::imap
#' @inheritParams future_map
#'
#' @return
#' A vector the same length as .x.
#'
#' @export
#' @examples
#' \donttest{plan(multisession, workers = 2)}
#'
#' future_imap_chr(sample(10), ~ paste0(.y, ": ", .x))
#'
#' \dontshow{
#' # Close open connections for R CMD Check
#' if (!inherits(plan(), "sequential")) plan(sequential)
#' }
future_imap <- function(.x,
                        .f,
                        ...,
                        .options = furrr_options(),
                        .env_globals = parent.frame(),
                        .progress = FALSE) {
  future_map2(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_chr <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_chr(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_dbl <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_dbl(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_int <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_int(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_lgl <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_lgl(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_raw <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_raw(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_dfr <- function(.x,
                            .f,
                            ...,
                            .id = NULL,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_dfr(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .id = .id,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

#' @rdname future_imap
#' @export
future_imap_dfc <- function(.x,
                            .f,
                            ...,
                            .options = furrr_options(),
                            .env_globals = parent.frame(),
                            .progress = FALSE) {
  future_map2_dfc(
    .x = .x,
    .y = vec_index(.x),
    .f = .f,
    ...,
    .options = .options,
    .env_globals = .env_globals,
    .progress = .progress
  )
}

Try the furrr package in your browser

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

furrr documentation built on Aug. 16, 2022, 1:07 a.m.