Ответ 1
Окружать операторы обратными окнами или кавычками, и все должно работать как ожидалось:
1:10 %>% `*`(2) %>% sum
# [1] 110
1:10 %>% `/`(2) %>% sum
# [1] 27.5
Я хотел бы понять, почему в пакете dplyr
или magrittr
и, более конкретно, функция цепочки %>%
имеет некоторые проблемы с основными операторами +
, -
, *
, и /
Chaining выводит результат предыдущего оператора и передает его как первый аргумент следующего:
1:10 %>% sum
# [55]
Итак, почему это не работает
1:10 %>% *2 %>% sum
1:10 %>% .*2 %>% sum
Я также обнаружил, что следующий синтаксис работает для добавления/вычитания, но не умножения или деления. почему так?
1:10 %>% +(2) # works OK
1:10 %>% *(2) # nope...
Так что я должен написать анонимную функцию даже для выполнения операции *2
на моем data.frame?
1:10 %>% (function(x) x*2) %>% sum
Спасибо, я не смог найти ответ в других вопросах SO.
Окружать операторы обратными окнами или кавычками, и все должно работать как ожидалось:
1:10 %>% `*`(2) %>% sum
# [1] 110
1:10 %>% `/`(2) %>% sum
# [1] 27.5
Или используйте пакет Aliases
in 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
включает слова для логических операторов, extract/replace и арифметические операторы