Execute code in temporarily altered environment
All functions prefixed by with_
work as follows. First, a particular
aspect of the global environment is modified (see below for a list).
Then, custom code (passed via the code
argument) is executed.
Upon completion or error, the global environment is restored to the previous
state. Each with_
function has a local_
variant, which instead resets
the state when the current evaluation context ends (such as the end of a
function).
new |
[various] |
Values for setting |
code |
[any] |
Code to execute in the temporary environment |
... |
Further arguments | |
with_...(new, code, ...)
with_collate()
: collation order
with_dir()
: working directory
with_envvar()
: environment variables
with_libpaths()
: library paths, replacing current libpaths
with_locale()
: any locale setting
with_makevars()
: Makevars variables
with_options()
: options
with_par()
: graphics parameters
with_path()
: PATH
environment variable
with_sink()
: output redirection
All with_
functions are created by a helper function,
with_()
. This functions accepts two arguments:
a setter function and an optional resetter function. The setter function is
expected to change the global state and return an "undo instruction".
This undo instruction is then passed to the resetter function, which changes
back the global state. In many cases, the setter function can be used
naturally as resetter.
Maintainer: Jim Hester jim.hester@rstudio.com
Authors:
Kirill Müller krlmlr+r@mailbox.org
Kevin Ushey kevinushey@gmail.com
Hadley Wickham hadley@rstudio.com
Winston Chang
Other contributors:
Jennifer Bryan [contributor]
Richard Cotton [contributor]
RStudio [copyright holder]
Useful links:
getwd() with_dir(tempdir(), getwd()) getwd() Sys.getenv("WITHR") with_envvar(c("WITHR" = 2), Sys.getenv("WITHR")) Sys.getenv("WITHR") with_envvar(c("A" = 1), with_envvar(c("A" = 2), action = "suffix", Sys.getenv("A")) ) # local variants are best used within other functions f <- function(x) { local_envvar(c("WITHR" = 2)) Sys.getenv("WITHR") } Sys.getenv("WITHR")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.