R:管道(%>;%)不使用圆形()。例如:136/13.00%>;%圆形()=10.46154
为什么R:管道(%>;%)不使用圆形()。例如:136/13.00%>;%圆形()=10.46154,r,rounding,piping,R,Rounding,Piping,为什么136/13.00%>%round()返回10?不带piper的相同输入返回正确的值 136/13.00 %>% round() [1] 10.46154 > round(136/13.00) [1] 10 10.46154 %>% round() [1] 10 看起来像是运算符优先级 (136/13) %>% round #[1] 10 我们还可以让它更连锁 136 %>% `/`(13) %>% roun
136/13.00%>%round()返回10?不带piper的相同输入返回正确的值
136/13.00 %>% round()
[1] 10.46154
> round(136/13.00)
[1] 10
10.46154 %>% round()
[1] 10
看起来像是运算符优先级
(136/13) %>%
round
#[1] 10
我们还可以让它更连锁
136 %>%
`/`(13) %>%
round
#[1] 10
因为<代码>%any%
运算符的优先级高于,例如,/
。因此,首先将舍入应用于13(不改变任何内容),然后将136除以13。我想继续这个话题。当我试图在代码的最底层使用round时,会发生错误。我想用双精度圆:
customers <- data_XYZ %>%
group_by(Client) %>%
summarise(count = n(),
mean = mean(Cost_1, na.rm = TRUE),
sd = sd(Cost_1, na.rm = TRUE)) %>%
filter(.,!is.nan(sd)) %>%
round([mean:sd],2)
客户%
分组依据(客户)%>%
汇总(计数=n(),
平均值=平均值(成本1,na.rm=真实值),
sd=sd(成本1,na.rm=TRUE))%>%
过滤器(,!is.nan(sd))%>%
四舍五入([平均值:sd],2)
尝试136%>%'/'(13)%%>%round
或明确指定操作顺序,如(136/13.00)%%>%round()
我在下面的答案中看到这是因为%>%优先于/。这是一个bug还是一个特性?我不认为管道有任何逻辑优先于它之前的任何东西。至少,使用tidyverse的人在想到pipingYes时并没有想到这一点。13在除以136之前被四舍五入。如果我将此链接,我将使用magrittr
s除法函数,即136%>%divide_除以(13)%>%round()
这是一个功能还是一个bug(似乎是我对这个问题的评论)?@LucasMation如前所述,我们需要检查运算符优先级。StackOveflow etiquete“:您不应继续讨论有答案的主题。提出新问题并删除此“答案”