我想了解为什么在dplyr
或magrittr
包中,更具体地说,链接函数%>%
在基本运算符+
上遇到了一些问题, -
,*
和/
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问题中找不到答案。
答案 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
包括'字'用于布尔运算符,提取/替换和算术运算符