assign_in()
takes a data structure and a pluck location,
assigns a value there, and returns the modified data structure.
modify_in()
applies a function to a pluck location, assigns the
result back to that location with assign_in()
, and returns the
modified data structure.
The pluck location must exist.
modify_in(.x, .where, .f, ...) assign_in(x, where, value)
.x | A vector or environment |
---|---|
.where, where | A pluck location, as a numeric vector of positions, a character vector of names, or a list combining both. The location must exist in the data structure. |
.f | A function to apply at the pluck location given by |
... | Arguments passed to |
x | A vector or environment |
value | A value to replace in |
# Recall that pluck() returns a component of a data structure that # might be arbitrarily deep x <- list(list(bar = 1, foo = 2)) pluck(x, 1, "foo")#> [1] 2#> [[1]] #> [[1]]$bar #> [1] 1 #> #> [[1]]$foo #> [1] 100 #> #># modify_in() applies a function to that location and update the # element in place: modify_in(x, list(1, "foo"), ~ .x * 200)#> [[1]] #> [[1]]$bar #> [1] 1 #> #> [[1]]$foo #> [1] 400 #> #># Additional arguments are passed to the function in the ordinary way: modify_in(x, list(1, "foo"), `+`, 100)#> [[1]] #> [[1]]$bar #> [1] 1 #> #> [[1]]$foo #> [1] 102 #> #>