dplyr管道输入处理?

时间:2019-04-12 02:33:04

标签: r dplyr magrittr

我找不到这个问题的答案,所以我想在这里提出。有人知道这是怎么回事吗?

as.integer(.29*100)
[1] 28

.29*100 %>% as.integer
[1] 29

我知道.29 * 100将是一个double,并且不能完美地表示double,因此为什么我们从as.integer获得该输出,因为它只是将double转换为int,但是关于管道,使结果有所不同?

1 个答案:

答案 0 :(得分:3)

我们需要将括号()保留为单个块,否则会有运算符优先级

library(magrittr)
(.29 * 100) %>%
      as.integer
#[1] 28

即它在做

as.integer(100) * 0.29
#[1] 29

如果使用括号包裹有任何困难,我们也可以执行上述版本的某些版本

.29 %>%
    `*`(100) %>% 
   as.integer
#[1] 28

或使用别名multiply_by

.29 %>%
    multiply_by(100) %>%
   as.integer
#[1] 28