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“:您不应继续讨论有答案的主题。提出新问题并删除此“答案”