value_exists: Objects in environments of calling functions

View source: R/value_exists.R

value_existsR Documentation

Objects in environments of calling functions

Description

All functions in this family operate in the environment of the calling function gens generations back in the call stack.

  ⁠value_exists, val_exists, vexists⁠   Checks for the existence of an object in the
  ⁠exists_value, exists_val, existsv⁠   environment of the gens-specified calling function.
   
  ⁠get_value, get_val, getv⁠ Gets the value of an object in the environment of the
  ⁠value_get, val_get, vget⁠ gens-specified calling function.
   
  ⁠set_value, set_val, setv⁠ Sets the value of an object in the environment of the
  ⁠value_set, val_set, vset⁠ gens-specified calling function.

Usage

value_exists(name, err = T, gens = 1)

get_value(name, err = T, gens = 1)

set_value(name, val, gens = 1)

exists_value(name, err = T, gens = 1)

exists_val(name, err = T, gens = 1)

existsv(name, err = T, gens = 1)

vexists(name, err = T, gens = 1)

val_exists(name, err = T, gens = 1)

value_get(name, err = T, gens = 1)

val_get(name, err = T, gens = 1)

vget(name, err = T, gens = 1)

getv(name, err = T, gens = 1)

get_val(name, err = T, gens = 1)

value_set(name, val, gens = 1)

val_set(name, val, gens = 1)

vset(name, val, gens = 1)

setv(name, val, gens = 1)

set_val(name, val, gens = 1)

set_value(name, val, gens = 1)

Arguments

name

A complete character scalar giving the name of an object.

err

A nonNA logical scalar indicating whether to throw an error if the object specified by name does not exist (i.e., rather than returning FALSE).

gens

A complete positive whole-number scalar giving the number of generations back in the function call stack to go.

val

A value to place into the object specified by name.

Value

A logical scalar

⁠value_exists, val_exists, vexists, ...⁠

The NULL object

⁠set_value, set_val, setv, ...⁠

An object

⁠get_value, get_val, getv, ...⁠

See Also

Other environments: callers(), os(), recycling_help()

Examples

egValueExists <- function() {
  egValueExistsC <- function() {
    parent <- uj::caller1()
    grand  <- uj::caller2()
    aInParent  <- uj::value_exists('A', err = FALSE, gens = 1)
    bInParent  <- uj::val_exists('B', err = FALSE, gens = 1)
    aInGrand   <- uj::vexists('A', err = FALSE, gens = 2)
    bInGrand   <- uj::existsv('B', err = FALSE, gens = 2)
    aValParent <- uj::get_value('A', err = FALSE, gens = 1)
    bValParent <- uj::get_val('B', err = FALSE, gens = 1)
    aValGrand  <- uj::getv('A', err = FALSE, gens = 2)
    bValGrand  <- uj::vget('B', err = FALSE, gens = 2)
    uj::say("\nParent Function     : '", parent, "'")
    uj::say("\nGrandparent Function: '", grand , "'")
    uj::say("\n")
    uj::say("\nDoes variable 'A' exist in parent function '", parent, "'? ", aInParent)
    uj::say("\nDoes variable 'B' exist in parent function '", parent, "'? ", bInParent)
    uj::say("\n")
    uj::say("\nDoes variable 'A' exist in grandparent function '", grand, "'? ", aInGrand)
    uj::say("\nDoes variable 'B' exist in grandparent function '", grand, "'? ", bInGrand)
    uj::say("\n")
    uj::say("\nValue of variable 'A' in parent function '", parent, "': ", aValParent)
    uj::say("\nValue of variable 'B' in parent function '", parent, "': ", bValParent)
    uj::say("\n")
    uj::say("\nValue of variable 'A' in grandparent function '", grand, "': ", aValGrand)
    uj::say("\nValue of variable 'B' in grandparent function '", grand, "': ", bValGrand)
    uj::vset('A', 'A', gens = 1)
    uj::vset('B', 'B', gens = 2)
    aInParent  <- uj::exists_val('A', err = FALSE, gens = 1)
    bInParent  <- uj::exists_value('B', err = FALSE, gens = 1)
    aInGrand   <- uj::value_exists('A', err = FALSE, gens = 2)
    bInGrand   <- uj::val_exists('B', err = FALSE, gens = 2)
    aValParent <- uj::val_get('A', err = FALSE, gens = 1)
    bValParent <- uj::value_get('B', err = FALSE, gens = 1)
    aValGrand  <- uj::get_value('A', err = FALSE, gens = 2)
    bValGrand  <- uj::get_val('B', err = FALSE, gens = 2)
    uj::say("\nParent Function     : '", parent, "'")
    uj::say("\nGrandparent Function: '", grand , "'")
    uj::say("\n")
    uj::say("\nDoes variable 'A' exist in parent function '", parent, "'? ", aInParent)
    uj::say("\nDoes variable 'B' exist in parent function '", parent, "'? ", bInParent)
    uj::say("\n")
    uj::say("\nDoes variable 'A' exist in grandparent function '", grand, "'? ", aInGrand)
    uj::say("\nDoes variable 'B' exist in grandparent function '", grand, "'? ", bInGrand)
    uj::say("\n")
    uj::say("\nValue of variable 'A' in parent function '", parent, "': ", aValParent)
    uj::say("\nValue of variable 'B' in parent function '", parent, "': ", bValParent)
    uj::say("\n")
    uj::say("\nValue of variable 'A' in grandparent function '", grand, "': ", aValGrand)
    uj::say("\nValue of variable 'B' in grandparent function '", grand, "': ", bValGrand)
  }
  egValueExistsB <- function() {B <- 1; egValueExistsC()}
  egValueExistsA <- function() {A <- 0; egValueExistsB()}
  egValueExistsA()
}
egValueExists()

j-martineau/uj documentation built on Sept. 14, 2024, 4:40 a.m.