Evaluates a simulation function on each row of a data frame or tibble containing parameter values. Returns a single tibble with parameters and simulation results. The function uses furrr::future_pmap, which allows for easy parallelization.

evaluate_by_row(
params,
sim_function,
...,
.progress = FALSE,
.options = furrr::furrr_options(),
system_time = TRUE
)

## Arguments

params data frame or tibble containing simulation parameter values. Each row should represent a separate set of parameter values. function to be evaluated, with argument names matching the variable names in params. The function must return a data.frame, tibble, or vector. additional arguments passed to sim_function. A single logical. Should a progress bar be displayed? Only works with multisession, multicore, and multiprocess futures. Note that if a multicore/multisession future falls back to sequential, then a progress bar will not be displayed. Warning: The .progress argument will be deprecated and removed in a future version of furrr in favor of using the more robust progressr package. The future specific options to use with the workers. This must be the result from a call to furrr_options(). logical indicating whether to print computation time. TRUE by default.

## Value

A tibble containing parameter values and simulation results.

## Examples

df <- data.frame(
n = 3:5,
lambda = seq(8, 16, 4)
)

evaluate_by_row(df, rpois)
#> Warning: UNRELIABLE VALUE: Future (‘<none>’) unexpectedly generated random numbers without specifying argument '[future.]seed'. There is a risk that those random numbers are not statistically sound and the overall results might be invalid. To fix this, specify argument '[future.]seed', e.g. 'seed=TRUE'. This ensures that proper, parallel-safe random numbers are produced via the L'Ecuyer-CMRG method. To disable this check, use [future].seed=NULL, or set option 'future.rng.onMisuse' to "ignore".#>    user  system elapsed
#>   0.206   0.055   0.467 #> # A tibble: 12 x 3
#>        n lambda .results
#>    <int>  <dbl>    <int>
#>  1     3      8        4
#>  2     3      8       11
#>  3     3      8        9
#>  4     4     12        8
#>  5     4     12       11
#>  6     4     12       14
#>  7     4     12       15
#>  8     5     16        8
#>  9     5     16       12
#> 10     5     16       14
#> 11     5     16       13
#> 12     5     16       12