Error de dplyr: problema extraño al combinar group_by, mutate e ifelse. ¿Es un error?

Tengo problemas extraños con dplyr y la combinación de group_by, mutate y ifelse. Considere el siguiente data.frame

> df1
  crawl.id group.id hits.diff
1        1        1        NA
2        1        2        NA
3        2        2         0
4        1        3        NA
5        1        3        NA
6        1        3        NA

Cuando lo uso el siguiente código

library(dplyr)
df1 %>%
  group_by(group.id) %>% 
  mutate( hits.consumed = ifelse(hits.diff<=0,-hits.diff,0) )

Por alguna razón me sale

Error: incompatible types, expecting a logical vector**

Sin embargo, eliminar cualquieragroup_by() oifelse todo funciona como se esperaba:

df1 %>%
  mutate( hits.consumed = ifelse(hits.diff<=0,-hits.diff,0) )

crawl.id group.id hits.diff hits.consumed
1        1        1        NA            NA
2        1        2        NA            NA
3        2        2         0             0
4        1        3        NA            NA
5        1        3        NA            NA
6        1        3        NA            NA

df1 %>%
  group_by( group.id ) %>%
  mutate( hits.consumed = -hits.diff )

  crawl.id group.id hits.diff hits.consumed
1        1        1        NA            NA
2        1        2        NA            NA
3        2        2         0             0
4        1        3        NA            NA
5        1        3        NA            NA
6        1        3        NA            NA

¿Es un error o una característica? ¿Alguien puede replicar esto? ¿Qué tiene de especial esa combinación específica de group_by, mutate y ifelse que hace que falle?

Mi propia investigación me llevó aquí:https://github.com/hadley/dplyr/issues/464 lo que sugiere que ya debería estar solucionado.

Aquí estádput(df1):

structure(list(crawl.id = c(1, 1, 2, 1, 1, 1), group.id = structure(c(1L, 
2L, 2L, 3L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"), 
    hits.diff = c(NA, NA, 0, NA, NA, NA)), .Names = c("crawl.id", 
"group.id", "hits.diff"), row.names = c(NA, -6L), class = "data.frame")

    

Respuestas a la pregunta(1)

Su respuesta a la pregunta