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


R purrr as_mapper 將對象轉換為映射器函數


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/map-mapper.R

相關用法


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