当我尝试将某些值传递到signif
时,我一直在处理一些天文数据,并且遇到一些奇怪的行为。
例如,在近似地球周长的情况下,signif(6400 * 2 * pi, 2)
产生40000
(正确答案),而6400 * 2 * pi %>% signif(2)
产生39680
:
library(dplyr)
rad_earth_km <- 6400
n_digits <- 2
# Option 1 (gives the correct answer)
circ_earth_1 <- signif(rad_earth_km * 2 * pi, n_digits) # Yields 40000
# Option 2 (gives the wrong answer)
circ_earth_2 <- rad_earth_km * 2 * pi %>% signif(2) # Yields 39680
在这里传递管道是否实际上合适时,我想了解为什么在这两种情况下,这两种方法给出不同的结果。我在技术性工作中经常使用管道,因此这让我有些担心。
答案 0 :(得分:3)
发布问题后,我很快就得出了答案。这是一个BIDMAS问题:
library(dplyr)
rad_earth_km <- 6400
n_digits <- 2
# Option 1 (gives the correct answer)
circ_earth_1 <- signif(rad_earth_km * 2 * pi, n_digits) # Yields 40000
# Option 2 (gives the wrong answer)
circ_earth_2 <- rad_earth_km * 2 * pi %>% signif(2) # Yields 39680
# Option 3 (given the correct answer again)
circ_earth_3 <- (rad_earth_km * 2 * pi) %>% signif(2) # Yields 40000
在%>%
以这种方式与*
进行交互之前,这并不是我真正想到的。如果有人遇到类似问题,可能值得保持这一点。