在data.table-1.9.2中,允许使用以下语法:
dt[some_column == max(some_column)]
这样可以对列本身进行简单,快速的过滤。
现在在data.table-1.9.4上,抛出以下错误,运行相同的代码
object 'some_column' not found
我有两个问题。
1。)为什么改变这个美丽的属性?! Matt Dowle在这里发表评论真是太好了。
2。)有没有人有一些聪明的解决方案来取代这种方法?
以外的东西new.var <- dt[, max(some_column)]
dt[some_column == new.var]
此致
ķ
答案 0 :(得分:1)
CRAN for Mac SL分支的最后一个二进制版本是1.9.2,这就是我所拥有的,正如你所说,这不是问题:
> d <- data.table(a=1:10)
> d[a==max(a),]
a
1: 10
所以我得到了最新的CRAN源版本1.9.4,并在卸载pkg:data.table并重新加载后用这些结果编译:
> d <- data.table(a=1:10)
> d[a==max(a),]
Error in `[.data.table`(d, a == max(a), )
object 'CsubsetVector' not found
重新启动后:
> d <- data.table(a=1:10)
> d[a==max(a),]
Error in eval(expr, envir, enclos) : object 'a' not found
使用说明at Github从源(Mac 3.1.2 SL分支)构建1.9.5之后,问题蒸发了:
> require(data.table)
Loading required package: data.table
data.table 1.9.5 For help type: ?data.table
*** NB: by=.EACHI is now explicit. See README to restore previous behavior.
> d[a==max(a),]
Error: object 'd' not found
> d <- data.table(a=1:10)
> d[a==max(a),]
a
1: 10