-
assign_in()
采用一个数据结构和一个 pluck 位置,在那里分配一个值,然后返回修改后的数据结构。 -
modify_in()
将函数应用于拾取位置,使用assign_in()
将结果分配回该位置,并返回修改后的数据结构。
参数
- .x, x
-
向量或环境
- .where, where
-
弹奏位置,作为位置的数值向量、名称的字符向量或两者组合的列表。该位置必须存在于数据结构中。
- .f
-
在
.where
给出的拔取位置应用的函数。 - ...
-
传递给
.f
的参数。 - value
-
要在
.x
中的拔取位置替换的值。使用zap()
来删除该元素。
例子
# 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
# Use assign_in() to modify the pluck location:
str(assign_in(x, list(1, "foo"), 100))
#> List of 1
#> $ :List of 2
#> ..$ bar: num 1
#> ..$ foo: num 100
# Or zap to remove it
str(assign_in(x, list(1, "foo"), zap()))
#> List of 1
#> $ :List of 1
#> ..$ bar: num 1
# Like pluck(), this works even when the element (or its parents) don't exist
pluck(x, 1, "baz")
#> NULL
str(assign_in(x, list(2, "baz"), 100))
#> List of 2
#> $ :List of 2
#> ..$ bar: num 1
#> ..$ foo: num 2
#> $ :List of 1
#> ..$ baz: num 100
# modify_in() applies a function to that location and update the
# element in place:
modify_in(x, list(1, "foo"), \(x) 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
#>
#>
相关用法
- R purrr modify_tree 递归修改列表
- R purrr modify 有选择地修改元素
- R purrr map_if 有条件地将函数应用于向量的每个元素
- R purrr map2 映射两个输入
- R purrr map_depth 在给定深度映射/修改元素
- R purrr map_dfr 返回数据帧的函数
- R purrr map 将函数应用于向量的每个元素
- R purrr accumulate 累积向量缩减的中间结果
- R purrr imap 将函数应用于向量的每个元素及其索引
- R purrr list_transpose 转置列表
- R purrr as_vector 将列表强制转换为向量
- R purrr array-coercion 强制数组列出
- R purrr auto_browse 包装一个函数,以便在出错时自动 browser()
- R purrr pluck 安全地获取或设置嵌套数据结构深处的元素
- R purrr insistently 将函数转换为等待,然后在错误后重试
- R purrr list_simplify 将列表简化为原子或 S3 向量
- R purrr rerun 多次重新运行表达式
- R purrr quietly 包装一个函数来捕获副作用
- R purrr list_flatten 压平列表
- R purrr pmap 同时映射多个输入(“并行”)
- R purrr possibly 包装函数以返回值而不是错误
- R purrr head_while 查找全部满足谓词的头/尾。
- R purrr rbernoulli 从伯努利分布生成随机样本
- R purrr rate-helpers 创建延迟率设置
- R purrr keep_at 根据元素的名称/位置保留/丢弃元素
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Modify a pluck location。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。