Использование! (или любой логический оператор) с%>% (magrittr) производит неожиданный вывод

Я столкнулся с ситуацией, когда%>% производит очень неожиданный результат в сочетании с!, Рассмотрим следующий код:

x <- c(1:20)
y <- !is.na(x)

> y
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
     TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

> sum(Y)
[1] 20

Хорошо, ничего удивительного там нет. Но если я попытаюсь сократить его, используя%>% происходят странные вещи:

!is.na(x) %>% sum

[1] TRUE

TRUE?? Не то, что я ожидал - это должно быть20.

Если я удалю! это дает мне0 как и ожидалось:

> is.na(x) %>% sum
[1] 0

и если я добавлю скобки, это работает:

> {!is.na(x)} %>% sum
[1] 20

и лечение! как работает функция:

> is.na(x) %>% `!` %>% sum
[1] 20

Что такое!is.na(x) %>% sum делает, и почему он возвращаетсяTRUE скорее, чем20?

РЕДАКТИРОВАТЬ: Другие логические операторы производят похожее поведение:

> T&T %>% sum()
[1] TRUE
> {T&T} %>% sum()
[1] 1

> T|T %>% sum()
[1] TRUE
> {T|T} %>% sum()
[1] 1

Ответы на вопрос(3)

Ваш ответ на вопрос