R: трубопровод (%>%) не работает с круглым (). Пример: 136/13,00 %>% round() = 10,46154

Почему 136/13.00 %>% round() вернуть 10? Тот же вход без пайпера возвращает правильное значение

136/13.00 %>% round()
[1] 10.46154
> round(136/13.00)
[1] 10
10.46154 %>% round()
[1] 10

2 ответа

Похоже на приоритет оператора

(136/13) %>% 
          round
#[1] 10

Мы также можем сделать его немного более цепким

136 %>%
     `/`(13) %>%
     round
#[1] 10

Из-за приоритета оператора. %any% операторы имеют более высокий приоритет, чем, например, /, Итак, раунд сначала применяется к 13 (ничего не меняя), затем 136 делится на 13.

Хочу продолжить эту тему. Ошибка возникает, когда я пытаюсь использовать раунд в самом низу кода. Я хочу округлить с двойной точностью:

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)
Другие вопросы по тегам