gpt4 book ai didi

r - 第二个参数中的链函数

转载 作者:行者123 更新时间:2023-12-02 01:28:24 25 4
gpt4 key购买 nike

是否有一种简单的方法来链接函数,即部分应用函数,以便保留一个参数,然后在调用之前将其应用于另一个函数的一个参数(而不是第一个参数)。 (在我的示例中:在给定函数 onetwo 的情况下,是否有更简单的方法来定义函数 two)

我尝试使用 magrittr 和 purrr 寻找解决方案,但没有想出比如下所示定义它更简单的方法。

one <- function(x,y){
paste(x,y)
}

two <- function(x, y){
x * y
}

three <- function(x,y){
one(x, two(y, 3))
}

three(1,2)

# [1] "1 6"

最佳答案

新的pipe operator R 4.1 中引入的 和 R 4.2 中引入的新占位符就是针对此类问题的。

one <- function(x,y){
paste(x,y)
}

two <- function(x, y){
x * y
}

three <- function(x,y){
y |>
two(3) |>
one(x, y = _)
}

three(1,2)
#> [1] "1 6"

创建于 2022 年 9 月 28 日 reprex v2.0.2


编辑

按照下面的注释,可以绕过:

two(2, 3) |> one(1, y = _)
#> [1] "1 6"

2 |> two(3) |> one(1, y = _)
#> [1] "1 6"

创建于 2022 年 9 月 28 日 reprex v2.0.2

要看到这一点,请记住管道运算符将下面的第一个形式转换为下一个形式。

h(g(f(x)))
f(x) |> g() |> h()
x |> f() |> g() |> h()

或者,使用问题中的函数,

one(x, two(y, 3))
two(y, 3) |> one(x, y = _)
2 |> two(3, y = _) |> one(x, y = _)

一个R-Help thread starting herelink 结尾R 核心团队成员 Luke Tierney 教授的精彩解释是 this YouTube video .

关于r - 第二个参数中的链函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73877826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com