Uso de ! (ou qualquer operador lógico) com%>% (magrittr) produz saída inesperada

Eu me deparei com uma situação em que%>% produz resultados surpreendentes quando combinados com!. Considere o seguinte código:

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

Ok, nada de surpreendente lá. Mas se eu tentar encurtá-lo usando%>% coisas estranhas acontecem:

!is.na(x) %>% sum

[1] TRUE

TRUE?? Não é o que eu esperava - deveria ser20.

Se eu remover o! isso me dá0 como esperado:

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

e se eu adicionar colchetes, funciona:

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

e tratando! como uma função funciona:

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

O que é!is.na(x) %>% sum fazendo, e por que ele retornaTRUE ao invés de20?

EDITAR: Os outros operadores lógicos produzem comportamento semelhante:

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

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

questionAnswers(3)

yourAnswerToTheQuestion