modifyList               package:utils               R Documentation

Recursively Modify Elements of a List

Description:

     Modifies a possibly nested list recursively by changing a subset
     of elements at each level to match a second list.

Usage:

     modifyList(x, val)

Arguments:

       x: a named 'list', possibly empty.

     val: a named list with components to replace corresponding
          components in 'x'.

Value:

     A modified version of 'x', with the modifications determined as
     follows (here, list elements are identified by their names). 
     Elements in 'val' which are missing from 'x' are added to 'x'. For
     elements that are common to both but are not both lists
     themselves, the component in 'x' is replaced by the one in 'val'. 
     For common elements that are both lists, 'x[[name]]' is replaced
     by 'modifyList(x[[name]], val[[name]])'.

Author(s):

     Deepayan Sarkar Deepayan.Sarkar@R-project.org

Examples:

     foo <- list(a = 1, b = list(c = "a", d = FALSE))
     bar <- modifyList(foo, list(e = 2, b = list(d = TRUE)))
     str(foo)
     str(bar)

