R 如何声明匿名函数
我想知道是否有简洁的方法来处理声明匿名函数 假设我想声明R 如何声明匿名函数,r,magrittr,R,Magrittr,我想知道是否有简洁的方法来处理声明匿名函数 假设我想声明function(x){return(x='a')},我希望能够,我希望能够执行f是一个实现函数的包,该函数执行如下操作: f()获取表达式并尝试将其解析为函数。这并不是在100%的情况下都能完美地工作,因此绝对建议检查生成的功能 以你为例: > pryr::f(.=="a") function (.) . == "a" function(x){ apply(x, 1, sum) } 您可以按如下方式直接调用: > f
function(x){return(x='a')}
,我希望能够,我希望能够执行f是一个实现函数的包,该函数执行如下操作:
f()
获取表达式并尝试将其解析为函数。这并不是在100%的情况下都能完美地工作,因此绝对建议检查生成的功能
以你为例:
> pryr::f(.=="a")
function (.)
. == "a"
function(x){
apply(x, 1, sum)
}
您可以按如下方式直接调用:
> f(.=="a")("b")
[1] FALSE
> f(.=="a")("a")
[1] TRUE
这适用于多个参数:
> f(a+b+c)
function (a, b, c)
a + b + c
及
什么时候不工作?
f()
在不直接调用函数名时,似乎无法区分变量名和函数名。以以下函数为例:
> pryr::f(.=="a")
function (.)
. == "a"
function(x){
apply(x, 1, sum)
}
此处sum
被解释为变量,因此解析为匿名函数中的参数:
> f(apply(x, 1, sum))
function (sum, x)
apply(x, 1, sum)
可以通过在调用中显式传递函数的预期参数来解决此问题:
> f(x, apply(x, 1, sum))
function (x)
apply(x, 1, sum)
你试过了吗<代码>“a”%>%{.==“a”}
我想声明一个不同的函数,你自己试过了吗f={.='a'}
看看pryr的f
函数:f(.='a”)(“b”)
做你想做的。@statquant donethanks Jarko我不知道这个很酷的函数,但你不公平,它对你的最后一个例子仍然很有效,你只需键入f(x,apply(x,1,sum))
@Moody\u Mudscapper-hmm,我没有意识到这是有效的。我编辑了我的帖子:)