Skip to contents

Option Generator

Usage

setGlobalOptions(...)

set_opt(...)

Arguments

...

Specification of options, see the Details section.

Details

The simplest way is to construct an option function (e.g. opt()) as:

opt = set_opt(
     "a" = 1,
     "b" = "text"
 )

Then users can get or set the options by

opt()
opt("a")
opt$a
opt[["a"]]
opt(c("a", "b"))
opt("a", "b")
opt("a" = 2)
opt$a = 2
opt[["a"]] = 2
opt("a" = 2, "b" = "new_text")

Options can be reset to their default values by:

opt(RESET = TRUE)
# or
reset_opt(opt)

The value for each option can be set as a list which contains more complex configurations:

opt = set_opt(
     "a" = list(
         .value = 1,
         .length = 1,
         .class = "numeric",
         .validate = function(x) x > 0
     )
)

The different fields in the list can be used to filter or validate the option values.

  • .value: The default value.

  • .length: The valid length of the option value. It can be a vector, the check will be passed if one of the length fits.

  • .class: The valid class of the option value. It can be a vector, the check will be passed if one of the classes fits.

  • .validate: Validation function. The input parameter is the option value and should return a single logical value.

  • .failed_msg: Once validation failed, the error message that is printed.

  • .filter: Filtering function. The input parameter is the option value and it should return a filtered option value.

  • .read.only: Logical. The option value can not be modified if it is set to TRUE.

  • .visible: Logical. Whether the option is visible to users.

  • .private: Logical. The option value can only be modified in the same namespace where the option function is created.

  • .synonymous: a single option name which should have been already defined ahead of current option. The option specified will be shared by current option.

  • .description: a short text for describing the option. The description is only used when printing the object.

For more detailed explanation, please go to the vignette.

Examples

opt = set_opt(
    a = 1,
    b = "text"
)
opt
#>  Option Value
#>  ------:-------
#>  a      1    
#>  b      text 
# for more examples, please go to the vignette