Inspecting Option Values
Usage
opt(x, default, env = parent.frame(), ...)
opt_set(x, value, env = parent.frame(), ...)
opt(x, ...) <- value
opt_source(x, env = parent.frame())
opts(xs = NULL, env = parent.frame())
opt_set_local(
x,
value,
env = parent.frame(),
...,
add = TRUE,
after = FALSE,
scope = parent.frame()
)
Arguments
- x, xs
An option name, vector of option names, or a named list of new option values
- default
A default value if the option is not set
- env
An environment, namespace or package name to pull options from
- ...
Additional arguments unused
- value
A new value to update the associated global option
- add, after, scope
Passed to on.exit, with alternative defaults.
scope
is passed to the on.exitenvir
parameter to disambiguate it fromenv
.
Value
For opt()
and opts()
; the result of the option (or a list of
results), either the value from a global option, the result of processing
the environment variable or the default value, depending on which of the
alternative sources are defined.
For modifying functions (opt_set and opt<-: the value of the option prior to modification
For opt_source; the source that is used for a specific option,
one of "option"
, "envir"
or "default"
.
Functions
opt()
: Retrieve an optionopt_set()
: Set an option's valueopt(x, ...) <- value
: An alias for opt_setopt_source()
: Determine source of option value. Primarily used for diagnosing options behaviors.opts()
: Retrieve multiple options. When no names are provided, return a list containing all options from a given environment. Accepts a character vector of option names or a named list of new values to modify global option values.opt_set_local()
: Set an option only in the local frame
Note
Local options are set with on.exit, which can be prone to error if
subsequent calls are not called with add = TRUE
(masking existing
on.exit callbacks). A more rigorous alternative might make use of
withr::defer.
Examples
define_options("Whether execution should emit console output", quiet = FALSE)
#>
#> quiet = FALSE
#>
#> Whether execution should emit console output
#>
#> option : globalenv.quiet
#> envvar : R_GLOBALENV_QUIET (evaluated if possible, raw string otherwise)
#> *default : FALSE
#>
opt("quiet")
#> [1] FALSE
define_options("Whether execution should emit console output", quiet = FALSE)
#>
#> quiet = FALSE
#>
#> Whether execution should emit console output
#>
#> option : globalenv.quiet
#> envvar : R_GLOBALENV_QUIET (evaluated if possible, raw string otherwise)
#> *default : FALSE
#>
opt_source("quiet")
#> [1] "default"
Sys.setenv(R_GLOBALENV_QUIET = TRUE)
opt_source("quiet")
#> [1] "envir"
options(globalenv.quiet = FALSE)
opt_source("quiet")
#> [1] "option"
define_options("Quietly", quiet = TRUE, "Verbosity", verbose = FALSE)
#>
#> quiet = TRUE
#>
#> Quietly
#>
#> *option : globalenv.quiet
#> envvar : R_GLOBALENV_QUIET (evaluated if possible, raw string otherwise)
#> default : TRUE
#>
#> verbose = FALSE
#>
#> Verbosity
#>
#> option : globalenv.verbose
#> envvar : R_GLOBALENV_VERBOSE (evaluated if possible, raw string otherwise)
#> *default : FALSE
#>
# retrieve multiple options
opts(c("quiet", "verbose"))
#> $quiet
#> [1] FALSE
#>
#> $verbose
#> [1] FALSE
#>
# update multiple options, returns unmodified values
opts(list(quiet = 42, verbose = TRUE))
#> $quiet
#> [1] TRUE
#>
#> $verbose
#> [1] FALSE
#>
# next time we check their values we'll see the modified values
opts(c("quiet", "verbose"))
#> $quiet
#> [1] 42
#>
#> $verbose
#> [1] TRUE
#>