我正在使用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))
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版本解决.
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |