注意所描述的行为已在dplyr的开发版本中得到修复.你可以使用devtools :: install_github("hadley/dplyr")安装dplyr
请看这个最小的例子; 我使用的是dplyr v0.3.0.2和data.table v1.9.4
library(dplyr)
library(data.table)
f <- function(x, y, bad) {
z <- data.table(x,y, key = "x")
z2 <- z %>% group_by(x) %>% summarise(sum.bad = sum(y == bad))
z2
}
f(rnorm(100), rnorm(100) < 0, bad = FALSE)
Run Code Online (Sandbox Code Playgroud)
当我跑上面的时候,我得到了
Error in `[.data.table`(dt, , list(sum.bad = sum(y == bad)), by = vars) :
object 'bad' not found
Run Code Online (Sandbox Code Playgroud)
然而,坏的是明确定义和范围.
如果我只是在函数之外运行它可以工作
x <- rnorm(100)
y <- rnorm(100) <0
bad <- FALSE
z <- data.table(x,y, key = "x")
z2 <- …Run Code Online (Sandbox Code Playgroud)