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


R purrr compose 将多个函数组合在一起创建一个新函数


创建一个由多个函数组成的新函数,即 compose(f, g) 相当于 function(...) f(g(...))

用法

compose(..., .dir = c("backward", "forward"))

参数

...

按顺序应用的函数(默认从右到左)。公式以通常的方式转换为函数。

支持Dynamic dots。特别是,如果您的函数存储在列表中,您可以将其与 !!! 拼接。

.dir

如果是 "backward"(默认值),则按相反的顺序(从右到左)调用函数,这与数学中的惯例一样。如果是 "forward" ,则从左到右调用它们。

一个函数

副词

该函数称为副词,因为它修饰函数(动词)的效果。如果您想在包中包含创建副词的函数,请务必阅读faq-adverbs-export

也可以看看

其他副词:auto_browse() , insistently() , negate() , partial() , possibly() , quietly() , safely() , slowly()

例子

not_null <- compose(`!`, is.null)
not_null(4)
#> [1] TRUE
not_null(NULL)
#> [1] FALSE

add1 <- function(x) x + 1
compose(add1, add1)(8)
#> [1] 10

fn <- compose(\(x) paste(x, "foo"), \(x) paste(x, "bar"))
fn("input")
#> [1] "input bar foo"

# Lists of functions can be spliced with !!!
fns <- list(
  function(x) paste(x, "foo"),
  \(x) paste(x, "bar")
)
fn <- compose(!!!fns)
fn("input")
#> [1] "input bar foo"
源代码:R/adverb-compose.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Compose multiple functions together to create a new function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。