Merge two named list based on their named entries. Where any element matches in both lists, the value from the second list is used in the updated list. Subelements are not examined and are simply replaced. If one list is empty, then it returns the other one, unchanged.

updateList(x, y)

# S4 method for list,list
updateList(x, y)

# S4 method for `NULL`,list
updateList(x, y)

# S4 method for list,`NULL`
updateList(x, y)

# S4 method for `NULL`,`NULL`
updateList(x, y)

Arguments

x, y

a named list

Value

A named list, with elements sorted by name. The values of matching elements in list y

replace the values in list x.

Author

Alex Chubaty

Examples

L1 <- list(a = "hst", b = NA_character_, c = 43)
L2 <- list(a = "gst", c = 42, d = list(letters))
updateList(L1, L2)
#> $a
#> [1] "gst"
#> 
#> $b
#> [1] NA
#> 
#> $c
#> [1] 42
#> 
#> $d
#> $d[[1]]
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"
#> 
#> 

updateList(L1, NULL)
#> $a
#> [1] "hst"
#> 
#> $b
#> [1] NA
#> 
#> $c
#> [1] 43
#> 
updateList(NULL, L2)
#> $a
#> [1] "gst"
#> 
#> $c
#> [1] 42
#> 
#> $d
#> $d[[1]]
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"
#> 
#> 
updateList(NULL, NULL) # should return empty list
#> list()