dplyr总结两次评估自定义函数?

Øys*_*n S 5 r dplyr

我正在使用dplyr group_bysummarise使用自定义聚合函数,并观察到一个奇怪的行为.看起来每个组的聚合函数评估两次.

这是一个最小的例子:

aggFun <- function(x) { print("Inside function"); print(rnorm(1)); sum(x)}
df <- data.frame(key = rep("a", 3), val = 1:3)
df %>% group_by(key) %>% summarise(sum = aggFun(val))
Run Code Online (Sandbox Code Playgroud)

输出如下:

[1] "Inside function"
[1] 0.3230769
[1] "Inside function"
[1] -0.3347653
# A tibble: 1 × 2
   key   sum
<fctr> <int>
1      a     6
Run Code Online (Sandbox Code Playgroud)

既然只有一个组,那么该函数不应只评估一次吗?我在大型应用程序中遇到同样的事情,并担心这可能对性能有害,或者我错过了什么?

通过升级到GitHub版本解决.