为什么将管道运算符与上限功能相结合在 R 中不起作用?

Why combining pipeline operator with ceiling function doesn't work in R?

当我尝试使用 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

因为 2/10 %>% ceiling()2/(10 %>% ceiling()) 相同,即 %>% 优先于 /

换句话说,2/10 %>% ceiling() = 2/10 = 0.2

一个magrittr解决方案可以是:

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

[1] 1

这是因为运算符的优先级。

您可以使用圆括号或大括号来阐明您想做什么

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

{2/10} %>% ceiling()