是否可以将前向管道操作符与匿名函数结合使用合并?如果是这样,我该怎么做呢?
我明白了基本的想法是以顺序的方式传递参数来执行函数。就像下面一样,首先匿名函数计算总和,然后将其传递给阶乘函数。
我怎么能做同样的事呢
这就是我尝试使用forward-pipe操作符执行的操作:
calculate <- function(func,d)
{
func(d)
}
factorial(calculate(function(x){x+1},7)) # function x is the anonymous function
我的代码使用了forward-pipe操作符-
7 %>% calculate(function(x){x+1}) %>% fact()
预期结果是40320,但结果是
func(d)中的错误:无法找到函数“func”
3条答案
按热度按时间llmtgqce1#
另一种选择是使用name显式调用
calculate
的参数。to94eoyn2#
当你使用
%>%
时,参数(在你的例子中是7
)被插入作为前面函数的第一个参数。因此,7 %>% calculate(function(x){x+1})
实际上计算为calculate(7, function(x){x+1})
。你可以用
或者使用命名参数,因为
7
与剩余的参数匹配。zbq4xfa03#
您还可以使用R 4.1.0(2021年5月)中引入的原生管道
|>
和匿名函数\(x)
操作符:你也可以在一行中使用它,而不定义
calculate
:创建于2023-09-28带有reprex v2.0.2