在R中使用管道操作
5 天 后
哈,前两天正在思考同样的问题,没想到已经有人把代码都写好了。
不过,我的出发点是Mathematica中的前缀、后缀操作符。
比如,Mathematica中用h[g[f[x,y]]],阅读与修改并不方便,尤其是括号的对齐,始终是个问题。
但Mathematica可以:
可以用后缀形式表达成f[x,y]//g//h;最典型的莫如N函数,经常放在最后,删除也很方便。
可以用前缀形式表达成h@g@f[x,y];
不过g、h都必须是一元函数,形式上似乎不如楼主实现的灵活。
待会再仔细研究一下楼主的代码吧。
不过,我的出发点是Mathematica中的前缀、后缀操作符。
比如,Mathematica中用h[g[f[x,y]]],阅读与修改并不方便,尤其是括号的对齐,始终是个问题。
但Mathematica可以:
可以用后缀形式表达成f[x,y]//g//h;最典型的莫如N函数,经常放在最后,删除也很方便。
可以用前缀形式表达成h@g@f[x,y];
不过g、h都必须是一元函数,形式上似乎不如楼主实现的灵活。
待会再仔细研究一下楼主的代码吧。
补充一下,若g、h是多元函数,用currying部分绑定法,用纯函数包装一下也就OK了
补充一下,若g、h是多元函数,用curr
6 天 后
plot(
diff(
log(
sample(
rnorm(10000,mean=10,sd=1),size=100,replace=FALSE)
)
)
,col="red",type="l")
这样显示会很奇怪呢?
感觉和管道差不多的效果,就是反过来包装。
diff(
log(
sample(
rnorm(10000,mean=10,sd=1),size=100,replace=FALSE)
)
)
,col="red",type="l")
这样显示会很奇怪呢?
感觉和管道差不多的效果,就是反过来包装。
[未知用户] 被格式化了,原来在Rstudio里有自动缩进的。
2 个月 后
貌似有错误啊,自由管道符不是%>>%,%>>%只能赋值给第一个参数,要用%:>%才可以实现用点代替的功能
[未知用户] pipeR v0.3修改了符号,为了与magrittr兼容
https://github.com/renkun-ken/pipeR/releases/tag/v0.3
https://github.com/renkun-ken/pipeR/releases/tag/v0.3
2 年 后
[未知用户] 文章的例子Mathematica中可以这样写
ListLinePlot@Differences@Log@RandomSample[RandomVariate[NormalDistribution[10,1],10^4],100]
用类似的管道语法可以这样
NormalDistribution[10,1]~RandomVariate~10000~RandomSample~100//Log//Differences//ListLinePlot
ListLinePlot@Differences@Log@RandomSample[RandomVariate[NormalDistribution[10,1],10^4],100]
用类似的管道语法可以这样
NormalDistribution[10,1]~RandomVariate~10000~RandomSample~100//Log//Differences//ListLinePlot