Skip to contents

Uses purrr::safely() and unpacks the results and errors. Also useful for debugging with a breakpoint

Usage

safe_imap(.x, .f, ..., retries = 0, parallel = FALSE)

Arguments

.x

object to iterate over, as in purrr::imap()

.f

a function, as in purrr::imap()

...

additional arguments to .f, as in purrr::imap()

retries

Number of times to retry any errors. Default 0 (just try once). Retries only make sense if errors are intermittent for some reason (network connectivity, etc)

parallel

Run in parallel with furrr::future_imap() (TRUE) or sequentially with purrr::imap() (FALSE, default)

Value

A vector the same length as .x

Examples

safe_imap(as.list(1:10) |> setNames(letters[1:10]),
                  \(x, y) ifelse(sample(c(1,2), 1) == 1,
                              stop(), paste(x, y)),
                  retries = 10) |>
 unlist()
#>  [1] "1 a"  "2 b"  "3 c"  "4 d"  "5 e"  "6 f"  "7 g"  "8 h"  "9 i"  "10 j"