dplyr管道输入处理?
dplyr pipe input processing?
这个问题我一直找不到答案,所以我想在这里提出来。有人知道这里发生了什么吗?
as.integer(.29*100)
[1] 28
.29*100 %>% as.integer
[1] 29
我知道 .29*100 是一个双精度数,而双精度数不能完美表示,因此我们从 as.integer 得到输出的原因是它只是将双精度数转换为一个整数,但它是关于什么的导致结果不同的管道?
我们需要括号 ()
将其保持为单个块,否则会有运算符优先级
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
这个问题我一直找不到答案,所以我想在这里提出来。有人知道这里发生了什么吗?
as.integer(.29*100)
[1] 28
.29*100 %>% as.integer
[1] 29
我知道 .29*100 是一个双精度数,而双精度数不能完美表示,因此我们从 as.integer 得到输出的原因是它只是将双精度数转换为一个整数,但它是关于什么的导致结果不同的管道?
我们需要括号 ()
将其保持为单个块,否则会有运算符优先级
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