-
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。