Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何声明匿名函数_R_Magrittr - Fatal编程技术网

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,我没有意识到这是有效的。我编辑了我的帖子:)