当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。