Leverages makeActiveBinding() by allowing parametrized functions that take the name of the binding and an arbitrary number of additional arguments.

create_env(names, fun, ..., .envir = parent.frame(),
  .enclos = parent.frame())

populate_env(env, names, fun, ..., .envir = parent.frame())

Arguments

names
A name, or a list of names, or a character vector; in the latter case the names are mangled if they are not representable in the native encoding
fun
A function with at least one argument, which will be called to compute the value of a binding. The function will be called with the binding name as first argument (unnamed), and ... as additional arguments
...
Additional arguments to fun
.envir
The environment in which fun will be executed, important if fun calls other functions that are not globally visible
.enclos
The enclosing environment (parent.env) for the newly created environment
env
An environment

Examples

env <- create_env(letters, paste0, "-lowercase") env$a
#> [1] "a-lowercase"
env$c
#> [1] "c-lowercase"
env$Z
#> NULL
populate_env(env, LETTERS, paste0, "-uppercase") env$a
#> [1] "a-lowercase"
env$Z
#> [1] "Z-uppercase"