agenis agenis - 2 months ago 15
R Question

Chaining arithmetic operators in dplyr

I would like to understand why, in the the

dplyr
or
magrittr
package, and more specifically the chaining function
%>%
has some trouble with the basic operators
+
,
-
,
*
, and
/


Chaining takes the output of previous statement and feeds it as first argument of the next:

1:10 %>% sum
# [55]


Thus how come this doesn't work

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


I also found that the following syntax works for adding/substracting, but not multiply or divide. why so?

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


So should I write an anonymous function even to do a
*2
operation on my data.frame?

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


Thanks, I couldn't find the answer in other SO questions.

Answer

Surround the operators with backticks or quotes, and things should work as expected:

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

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