【发布时间】:2015-01-05 05:28:16
【问题描述】:
注意 所描述的行为已在 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)
当我运行上面的代码时,我得到了
Error in `[.data.table`(dt, , list(sum.bad = sum(y == bad)), by = vars) :
object 'bad' not found
但是,糟糕的定义明确且在范围内。
如果我只是在函数之外运行它,它就可以工作
x <- rnorm(100)
y <- rnorm(100) <0
bad <- FALSE
z <- data.table(x,y, key = "x")
z2 <- z %>% group_by(x) %>% summarise(sum.bad = sum(y == bad))
z2
这里有什么问题?是 data.table 还是 dplyr 的错误?
【问题讨论】:
-
dplyr 0.4.0,data.table 1.9.4不会抛出错误。 -
我得到了最新的 CRAN 版本,它是 0.3.0.2。
-
如果您将括号包裹在
summarise周围,则将错误更改为.datanot found insummarise_ -
我认为由于非标准评估,
bad在您要评估时已超出范围。尝试在那里拨打force -
@RichardScriven 你能举个例子吗?我真的不明白你的意思。
标签: r data.table dplyr