Skip to contents

Wrap a custom generator function so it can participate in simulate_data().

Usage

gen_custom(
  vars,
  generator,
  level = c("single", "level2", "multilevel"),
  ...,
  metadata = list()
)

Arguments

vars

Character vector naming the generated variables.

generator

Function called as generator(context = context, vars = vars, level = level, ...). It must return a list with data and names elements, and may include metadata.

level

Simulation level. A level-2 custom generator may return either one row per group or one row per simulated observation.

...

Additional arguments passed to generator.

metadata

List of wrapper metadata stored on the generator specification.

Value

An mlsim_generator_spec object for use in simulate_data().

Examples

constant_generator <- function(context, vars, level, value = 1) {
  list(data = data.frame(value = rep(value, context$n_rows)), names = vars)
}

sim <- simulate_data(
  n = 3,
  generators = list(x = gen_custom("x", constant_generator, value = 7))
)
sim$data
#>    obs_id     x
#>     <int> <num>
#> 1:      1     7
#> 2:      2     7
#> 3:      3     7