local_

0th

Percentile

Create a new "with" or "local" function

These are constructors for with_... or local_... functions. They are only needed if you want to alter some global state which is not covered by the existing with_... functions, see withr-package for an overview.

Keywords
internal
Usage
local_(set, reset = set, envir = parent.frame())

with_(set, reset = set, envir = parent.frame())

Arguments
set

[function(...)] Function used to set the state. The function can have arbitrarily many arguments, they will be replicated in the formals of the returned function.

reset

[function(x)] Function used to reset the state. The first argument can be named arbitrarily, further arguments with default values, or a "dots" argument, are supported but not used: The function will be called as reset(old).

envir

[environment] Environment of the returned function.

Details

The with_... functions reset the state immediately after the code argument has been evaluated. The local_... functions reset their arguments after they go out of scope, usually at the end of the function body.

Value

[function(new, code, ...)] A function with at least two arguments,

  • new: New state to use

  • code: Code to run in that state.

If there are more arguments to the function passed in set they are added to the returned function. If set does not have arguments, the returned function only has a code argument.

Aliases
  • local_
  • with_
Examples
# NOT RUN {
with_(setwd)

global_stack <- list()
set_global_state <- function(state, msg = "Changing global state.") {
  global_stack <- c(list(state), global_stack)
  message(msg)
  state
}
reset_global_state <- function(state) {
  old_state <- global_stack[[1]]
  global_stack <- global_stack[-1]
  stopifnot(identical(state, old_state))
}
with_(set_global_state, reset_global_state)
# }
Documentation reproduced from package withr, version 2.1.0, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.