Try to find and replace elements and signal an error if not
found, unless it is stated to explicitly add the element (see option add
).
replace(.x, ...)
ref_replace(.x, ...)
# S3 method for Container
replace(.x, old, new, add = FALSE, ...)
# S3 method for Container
ref_replace(.x, old, new, add = FALSE, ...)
# S3 method for Dict
replace(.x, old, new, ...)
# S3 method for Dict
ref_replace(.x, old, new, ...)
any R
object.
additional arguments to be passed to or from methods.
old element to be found and replaced.
the new element replacing the old one.
logical
if FALSE
(default) and element was not found,
an error is given. In contrast, if set to TRUE
the new element is added
regardless of whether it is used as a replacement for an existing element or
just added as a new element.
For Container
, an object of class Container
(or one of the
respective derived classes).
For Dict
an object of class Dict
.
replace
uses copy semantics while ref_replace
works by reference.
co = container("x", 9)
replace(co, 9, 0)
#> ["x", 0]
replace(co, "x", 0)
#> [0, 9]
try({
replace(co, "z", 0) # old element ("z") is not in Container
})
#> Error : old element ("z") is not in Container
replace(co, "z", 0, add = TRUE) # just add the zero without replacement
#> ["x", 9, 0]
d = dict(a = 1, b = "z")
replace(d, 1, 1:5)
#> {a = (1L 2L 3L 4L ...), b = "z"}
replace(d, "z", "a")
#> {a = 1, b = "a"}
try({
replace(d, "a", 2) # old element ("a") is not in Dict
})
#> Error : old element ("a") is not in Dict