Почему объединение оператора трубопровода с функцией потолка не работает в R? - PullRequest
1 голос
/ 02 февраля 2020

Когда я пытаюсь использовать функцию ceiling(), она работает нормально, но когда я пытаюсь что-то разделить и передать функцию потолка с помощью оператора конвейера (2/10 %>% ceiling()), у меня возникает проблема.

ceiling(0.2)
1

ceiling(2/10)
1

2/10
0.2

2/10 %>% ceiling()
0.2

2 %>% `/`(10)
0.2

2 %>% `/`(10) %>% ceiling()
1

0.2 %>% ceiling()
1

Ответы [ 3 ]

2 голосов
/ 02 февраля 2020

Поскольку 2/10 %>% ceiling() работает как 2/(10 %>% ceiling()), т. Е. %>% имеет приоритет над /.

Иными словами, 2/10 %>% ceiling() = 2/10 = 0.2

1 голос
/ 02 февраля 2020

Это из-за приоритета оператора.

Вы можете уточнить, что вы хотите сделать, используя круглые или фигурные скобки

library(magrittr)
(2/10) %>% ceiling()

{2/10} %>% ceiling()
1 голос
/ 02 февраля 2020

Одно magrittr решение может быть:

2 %>%
 divide_by(10) %>%
 ceiling()

[1] 1
...