我正在使用dplyr
group_by
和summarise
函数以及自定义聚合函数,并观察到一种奇怪的行为。看起来每个组的聚合函数评估两次。
这是一个最小的例子:
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))
以下是输出:
[1] "Inside function"
[1] 0.3230769
[1] "Inside function"
[1] -0.3347653
# A tibble: 1 × 2
key sum
<fctr> <int>
1 a 6
由于只有一个组,该功能是否只应评估一次?我在大型应用程序中遇到同样的问题,并担心这可能对性能有害,或者我错过了什么?
通过升级到GitHub版本解决。