如何将前向管道运算符与匿名函数结合起来
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
与剩余参数匹配。
是否可以将正向管道运算符与匿名函数结合使用? 如果是这样,我该怎么办?
我知道基本的想法是将函数的参数按顺序传递给下面的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
与剩余参数匹配。