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