dplyr summaryize () y summaryise_each () hacen llamadas adicionales a las funciones proporcionadas

Parece quesummarise ysummarise_each están haciendo llamadas adicionales innecesarias a las funciones de devolución de llamada que se les proporcionan. Supongamos que tenemos lo siguiente

X <- data.frame( Group = rep(c("G1","G2"),2:3), Var1 = 1:5, Var2 = 11:15 )

que se ve así:

   Group Var1 Var2
 1    G1    1   11
 2    G1    2   12
 3    G2    3   13
 4    G2    4   14
 5    G2    5   15

Supongamos además que tenemos una función (potencialmente costosa)

f <- function(v)
{
   cat( "Calling f with vector", v, "\n" )
   ## ...additional bookkeeping and processing...
   mean(v)
}

que nos gustaría aplicar a cada una de nuestras variables en cada grupo. Utilizandodplyr, podríamos hacerlo de la siguiente manera:

X %>% group_by( Group ) %>% summarise_each( funs(f) )

Sin embargo, el resultado muestra quef se llamó una vez más para cada variable en G1:

Calling f with vector 1 2 
Calling f with vector 1 2 
Calling f with vector 3 4 5 
Calling f with vector 11 12 
Calling f with vector 11 12 
Calling f with vector 13 14 15 
# A tibble: 2 x 3
   Group  Var1  Var2
  <fctr> <dbl> <dbl> 
1     G1   1.5  11.5
2     G2   4.0  14.0

El mismo problema está presente cuando se usasummarize:

> X %>% group_by( Group ) %>% summarise( test = f(Var1) )
Calling f with vector 1 2
Calling f with vector 1 2
Calling f with vector 3 4 5
# A tibble: 2 × 2
   Group  test
  <fctr> <dbl>
1     G1   1.5
2     G2   4.0

¿Por qué sucede esto y cómo se podría prevenir?summarise ysummarise_each de hacer esas llamadas extra?

(Esto está usandoR versión 3.3.0 ydplyr versión 0.5.0)

EDITAR: Parece que el problema tiene que ver con la interacción entregroup_by ysummarise/summarise_each. Sin la agrupación, no se realizan llamadas adicionales. También,mutate ymutate_each No sufras de este problema. (Crédito:eddi yeipi10 para estos hallazgos)

Respuestas a la pregunta(1)

Su respuesta a la pregunta