dplyr中的链算术运算符,%>%管道

时间:2014-12-08 18:23:09

标签: r dplyr piping magrittr

我想了解为什么在dplyrmagrittr包中,更具体地说,链接函数%>%在基本运算符+上遇到了一些问题, -*/

Chaining获取前一个语句的输出并将其作为下一个语句的第一个参数提供:

1:10 %>% sum
# [55]

因此,这怎么会起作用

1:10 %>%  *2 %>% sum
1:10 %>% .*2 %>% sum

我还发现以下语法适用于添加/减少,但不能乘法或除法。为什么呢?

1:10 %>% +(2) # works OK
1:10 %>% *(2) # nope...

我应该写一个匿名函数,甚至对我的data.frame进行*2操作吗?

1:10 %>% (function(x) x*2) %>% sum

谢谢,我在其他SO问题中找不到答案。

2 个答案:

答案 0 :(得分:33)

用反引号或引号围绕操作员,事情应按预期工作:

1:10 %>%  `*`(2) %>% sum
# [1] 110

1:10 %>%  `/`(2) %>% sum
# [1] 27.5

答案 1 :(得分:23)

或者使用Aliases包中的magrittr,例如:

1:10 %>% multiply_by(2)
# [1]  2  4  6  8 10 12 14 16 18 20

1:10 %>% add(2)
# [1]  3  4  5  6  7  8  9 10 11 12

Aliases包括'字'用于布尔运算符,提取/替换和算术运算符