【发布时间】:2015-09-27 02:40:52
【问题描述】:
我是 R 新手,我刚刚发现我患有 Bracket Phobia(请参阅链接中的评论)。我喜欢magrittr 表示法%>% 的工作方式,因为它在某些情况下避免了嵌套括号,并使代码更具可读性。我来自Mathematica,那里有一个非常相似的原生// 表示法来做%>% 所做的事情。以下是 R 和 Mathematica 的一些比较:
#R Notation
c(1.5,-2.3,3.4) %>% round %>% abs %>% sum
#Mathematica Notation
{1.5,-2.3,3.4}//Round//Abs//Total
到目前为止一切都很好,但是,我的问题是:
有什么方法可以模仿Mathematica @ notation,在R 中具有从右到左的关联性?
这是它在 Mathematica 中的工作原理,以解决上面的相同代码:
Total@Abs@Round@{1.5,-2.3,3.4}
在 Mathematica 中也可以写成:
Total[Abs[Round[{1.5,-2.3,3.4}]]]
就像在R 中一样:
sum(abs(round(c(1.5,-2.3,3.4))))
但在R 中添加这样的内容会更干净(和酷):
sum@abs@round@c(1.5,-2.3,3.4)
PS:我知道@ 用于 S4 课程,这不是一个好主意。这只是一个说明性的比较。
【问题讨论】:
-
你应该看看 proto 包。
-
在 R 中做这样的事情,你需要一个具有从右到左关联性的运算符,而且似乎无法定义这样的运算符。
-
@MrFlick 感谢您的评论。我更改了帖子主题以使其更清晰。
-
这个话题也在
magrittrissue #26中讨论过:github.com/smbache/magrittr/issues/26 -
关于符号创建:question 32305096
标签: r wolfram-mathematica associativity magrittr