有可能得到F#和#x27;“s函数应用程序”|&燃气轮机&引用;R的接线员?

有可能得到F#和#x27;“s函数应用程序”|&燃气轮机&引用;R的接线员?,r,f#,operator-overloading,R,F#,Operator Overloading,可能重复: 我发现R语法与F#相比非常笨拙: 在R中,而不是: plot(exp(cumsum(returns))) 我很乐意 returns |> cumsum |> exp |> plot 有没有办法让R中的操作员过载以达到类似的效果 谢谢当然可以,为什么不呢 `%|>%` = function(x, y) y(x) 1:10 %|>% cumsum %|>% plot 从Reduce帮助页面中被盗: Funcall <- function(

可能重复:

我发现R语法与F#相比非常笨拙:

在R中,而不是:

plot(exp(cumsum(returns)))
我很乐意

returns |> cumsum |> exp |> plot
有没有办法让R中的操作员过载以达到类似的效果

谢谢

当然可以,为什么不呢

`%|>%` = function(x, y) y(x)
1:10 %|>% cumsum %|>% plot

Reduce
帮助页面中被盗:

Funcall <- function(f, ...) f(...)
Reduce(Funcall, list(plot, exp, cumsum), 1:10, right = TRUE)

Funcall您是一位绅士和学者!但要小心,我的直觉是它很小recommendable@baptiste:为什么不呢?这种方法的优点是易于阅读(至少对于R、Matlab、scipy等用户而言),并且总体上更容易“进入”为递归和重复操作设计的现有R函数(例如,
*应用
)。再说一次,我是个聪明人,超载了
如中所示,有人能推荐一种比%|>%更短的运算符吗?鉴于函数在R中的定义方式以及这个问题的“封闭”性质,很难想象一个比babtiste更短的运算符,你应该在回答一个开放性问题时发表评论。@nxstock trader你可以定义任何你想要的
%[char]
,或者按照我的链接找到
的重载![字符]