обработка ввода dplyr трубы? - PullRequest
3 голосов
/ 12 апреля 2019

Мне не удалось найти ответ на этот вопрос, поэтому я хочу задать его здесь. Кто-нибудь знает, что здесь происходит?

as.integer(.29*100)
[1] 28

.29*100 %>% as.integer
[1] 29

Я понимаю, что .29 * 100 будет двойным, и двойные не могут быть точно представлены, поэтому мы получаем этот вывод из as.integer, так как он просто переводит двойное в целое число, но что это за канал, который сделать другой результат?

1 Ответ

3 голосов
/ 12 апреля 2019

Нам нужны парены (), чтобы сохранить его как один блок, иначе есть приоритет оператора

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
...