Try to find and replace elements at given indices and signal an
error if not found, unless it is stated to explicitly add the element (see
option add
).
replace_at(.x, ...)
ref_replace_at(.x, ...)
# S3 method for Container
replace_at(.x, ..., .add = FALSE)
# S3 method for Container
ref_replace_at(.x, ..., .add = FALSE)
# S3 method for dict.table
replace_at(.x, ..., .add = FALSE)
# S3 method for dict.table
ref_replace_at(.x, ..., .add = FALSE)
any R
object.
either name = value pairs or two vectors/lists with names/values to be replaced.
logical
if FALSE
(default) and index is invalid, an error is
given. If set to TRUE
the new element is added at the given index
regardless whether the index existed or not. Indices can consist of numbers
or names or both, except when adding values at new indices, which is only
allowed for names.
For Container
, an object of class Container
(or one of the
respective derived classes).
For dict.table
an object of class dict.table
.
replace_at
uses copy semantics while ref_replace_at
works by
reference.
co = container(a = 0, b = "z")
replace_at(co, a = 1, b = 2)
#> [a = 1, b = 2]
replace_at(co, 1:2, 1:2) # same
#> [a = 1L, b = 2L]
replace_at(co, c("a", "b"), list(1, 2)) # same
#> [a = 1, b = 2]
try({
replace_at(co, x = 1) # names(s) not found: 'x'
})
#> Error : names(s) not found: 'x'
replace_at(co, x = 1, .add = TRUE) # ok (adds x = 1)
#> [a = 0, b = "z", x = 1]
dit = dict.table(a = 1:3, b = 4:6)
replace_at(dit, a = 3:1)
#> <dict.table> with 3 rows and 2 columns
#> a b
#> 1: 3 4
#> 2: 2 5
#> 3: 1 6
replace_at(dit, 1, 3:1) # same
#> <dict.table> with 3 rows and 2 columns
#> a b
#> 1: 3 4
#> 2: 2 5
#> 3: 1 6
replace_at(dit, "a", 3:1) # same
#> <dict.table> with 3 rows and 2 columns
#> a b
#> 1: 3 4
#> 2: 2 5
#> 3: 1 6
replace_at(dit, a = 3:1, b = 6:4)
#> <dict.table> with 3 rows and 2 columns
#> a b
#> 1: 3 6
#> 2: 2 5
#> 3: 1 4
replace_at(dit, 1:2, list(3:1, 6:4)) # same
#> <dict.table> with 3 rows and 2 columns
#> a b
#> 1: 3 6
#> 2: 2 5
#> 3: 1 4
try({
replace_at(dit, x = 1) # column(s) not found: 'x'
})
#> Error : column(s) not found: 'x'
replace_at(dit, x = 1, .add = TRUE) # ok (adds column)
#> <dict.table> with 3 rows and 3 columns
#> a b x
#> 1: 1 4 1
#> 2: 2 5 1
#> 3: 3 6 1