1

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

我知道基本思想是以顺序方式传递参数以使函数执行。如下所示,首先匿名函数计算总和,然后将其传递给阶乘函数。

我怎么能做同样
的事情这是我试图使用正向管道运算符执行的 -

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,但结果是

func(d) 中的错误:找不到函数“func”

4

2 回答 2

2

calculate另一种选择是使用 name 显式调用的参数

7 %>% calculate(func=function(x){x+1}) %>% factorial()
于 2019-10-03T08:54:43.580 回答
2

当您使用%>%参数(在您的情况下7)时,将作为前一个函数的第一个参数插入。因此,7 %>% calculate(function(x){x+1})实际上评估为calculate(7, function(x){x+1})

你可以用

7 %>% calculate(function(x){x+1}, .) %>% factorial()

或使用命名参数作为 then7匹配剩余的参数。

于 2019-10-03T08:54:53.833 回答