as_mapper
是大多數 purrr 函數允許的各種函數規範背後的動力源。它是 S3 通用的。默認方法將其參數轉發到 rlang::as_function()
。
用法
as_mapper(.f, ...)
# S3 method for character
as_mapper(.f, ..., .null, .default = NULL)
# S3 method for numeric
as_mapper(.f, ..., .null, .default = NULL)
# S3 method for list
as_mapper(.f, ..., .null, .default = NULL)
參數
- .f
-
函數、公式或向量(不一定是原子的)。
如果是函數,則按原樣使用。
如果有一個公式,例如
~ .x + 2
,轉換為函數。可以通過三種方式引用參數:-
對於單參數函數,請使用
.
-
對於兩個參數函數,請使用
.x
和.y
-
如需更多參數,請使用
..1
、..2
、..3
等
此語法允許您創建非常緊湊的匿名函數。請注意,公式函數在概念上采用點(這就是您可以使用
..1
等的原因)。它們默默地忽略公式表達式中未使用的其他參數。如果是字符向量、數值向量或列表,則將其轉換為提取器函數。字符向量按名稱索引,數字向量按位置索引;使用列表按不同級別的位置和名稱進行索引。如果組件不存在,則返回
.default
的值。 -
- ...
-
傳遞給方法的附加參數。
- .default, .null
-
提取器函數的可選附加參數(即當
.f
是字符、整數或列表時)。當值不存在(不存在)或為空(長度為 0)時返回。.null
已棄用;請改用.default
。
例子
as_mapper(\(x) x + 1)
#> \(x) x + 1
#> <environment: 0x564147257418>
as_mapper(1)
#> function (x, ...)
#> pluck_raw(x, list(1), .default = NULL)
#> <environment: 0x564147167290>
as_mapper(c("a", "b", "c"))
#> function (x, ...)
#> pluck_raw(x, list("a", "b", "c"), .default = NULL)
#> <environment: 0x564147111280>
# Equivalent to function(x) x[["a"]][["b"]][["c"]]
as_mapper(list(1, "a", 2))
#> function (x, ...)
#> pluck_raw(x, list(1, "a", 2), .default = NULL)
#> <environment: 0x5641470b05b0>
# Equivalent to function(x) x[[1]][["a"]][[2]]
as_mapper(list(1, attr_getter("a")))
#> function (x, ...)
#> pluck_raw(x, list(1, function (x)
#> attr(x, attr, exact = TRUE)), .default = NULL)
#> <environment: 0x564147050088>
# Equivalent to function(x) attr(x[[1]], "a")
as_mapper(c("a", "b", "c"), .default = NA)
#> function (x, ...)
#> pluck_raw(x, list("a", "b", "c"), .default = NA)
#> <environment: 0x564146ff7598>
相關用法
- R purrr as_vector 將列表強製轉換為向量
- R purrr accumulate 累積向量縮減的中間結果
- R purrr array-coercion 強製數組列出
- R purrr auto_browse 包裝一個函數,以便在出錯時自動 browser()
- R purrr attr_getter 創建屬性 getter 函數
- R purrr imap 將函數應用於向量的每個元素及其索引
- R purrr list_transpose 轉置列表
- R purrr map_if 有條件地將函數應用於向量的每個元素
- R purrr map2 映射兩個輸入
- R purrr pluck 安全地獲取或設置嵌套數據結構深處的元素
- R purrr insistently 將函數轉換為等待,然後在錯誤後重試
- R purrr map_depth 在給定深度映射/修改元素
- 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 根據元素的名稱/位置保留/丟棄元素
- R purrr keep 根據元素的值保留/丟棄元素
- R purrr transpose 轉置列表。
- R purrr flatten 將列表的列表展平為簡單的向量
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Convert an object into a mapper function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。