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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。