A key-value store for R6::R6 objects. On retrieval of an object, the following applies:

  • If the object is a R6ClassGenerator, it is initialized with new().

  • If the object is a function, it is called and must return an instance of a R6::R6 object.

  • If the object is an instance of a R6 class, it is returned as-is.

Default argument required for construction can be stored alongside their constructors by passing them to $add().


R6::R6Class object.


d = Dictionary$new()


  • get(key, ...)
    (character(1), ...) -> any
    Retrieves object with key key from the dictionary. Additional arguments must be named and are passed to the constructor of the stored object.

  • mget(keys, ...)
    (character(), ...) -> named list()
    Returns objects with keys keys in a list named with keys. Additional arguments must be named and are passed to the constructors of the stored objects.

  • has(keys)
    character() -> logical()
    Returns a logical vector with TRUE at its i-th position if the i-th key exists.

  • keys(pattern = NULL)
    character(1) -> character()
    Returns all keys which comply to the regular expression pattern. If pattern is NULL (default), all keys are returned.

  • add(key, value, ..., required_args = character())
    (character(1), any, ..., character()) -> self
    Adds object value to the dictionary with key key, potentially overwriting a previously stored item. Additional arguments in ... must be named and are passed as default arguments to value during construction. The names of all additional arguments which are mandatory for construction and missing in ... should be listed in required_args.

  • remove(keys)
    character() -> self
    Removes objects with keys keys from the dictionary.

  • required_args(key)
    (character(1)) -> character()
    Returns the names of arguments required to construct the object.

S3 methods


library(R6) item1 = R6Class("Item", public = list(x = 1)) item2 = R6Class("Item", public = list(x = 2)) d = Dictionary$new() d$add("a", item1) d$add("b", item2) d$add("c", item1$new()) d$keys()
#> [1] "a" "b" "c"
#> <Item> #> Public: #> clone: function (deep = FALSE) #> x: 1
d$mget(c("a", "b"))
#> $a #> <Item> #> Public: #> clone: function (deep = FALSE) #> x: 1 #> #> $b #> <Item> #> Public: #> clone: function (deep = FALSE) #> x: 2 #>