當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R purrr modify_in 修改拔取位置


  • assign_in() 采用一個數據結構和一個 pluck 位置,在那裏分配一個值,然後返回修改後的數據結構。

  • modify_in() 將函數應用於拾取位置,使用 assign_in() 將結果分配回該位置,並返回修改後的數據結構。

用法

modify_in(.x, .where, .f, ...)

assign_in(x, where, value)

參數

.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/pluck-assign.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Modify a pluck location。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。