如何将前向管道运算符与匿名函数结合起来

How can I combine the forward-pipe operator with an anonymous function

是否可以将正向管道运算符与匿名函数结合使用? 如果是这样,我该怎么办?

我知道基本的想法是将函数的参数按顺序传递给下面的execute.Like,首先匿名函数计算总和,然后将其传递给阶乘函数。

我怎样才能做到同样的事情
这就是我要使用前向管道运算符执行的操作-

calculate <- function(func,d)
 {
   func(d)
   }

factorial(calculate(function(x){x+1},7)) # function x is the anonymous function

我的代码使用前向管道运算符-

7 %>% calculate(function(x){x+1}) %>% fact()

预期结果是 40320,但结果是

Error in func(d) : could not find function "func"

另一种选择是使用名称

显式调用 calculate 的参数
7 %>% calculate(func=function(x){x+1}) %>% factorial()

当您使用 %>% 时,参数(在您的例子中是 7)作为前面函数的第一个参数插入。因此,7 %>% calculate(function(x){x+1}) 实际上计算为 calculate(7, function(x){x+1})

您可以使用

解决这个问题
7 %>% calculate(function(x){x+1}, .) %>% factorial()

or 使用命名参数,因为 7 与剩余参数匹配。