【发布时间】:2015-03-03 15:45:44
【问题描述】:
我在数据表中使用“by”时偶然发现了一种特殊行为。如果有人可以解释以下行为,那就太好了
我只是将一列值相加成正负两个桶。
dt = data.table(a=sample(letters, 100, replace=T), b= (-49:50), c=(-49:50))
以下所有工作
dt[, sum(b), by=as.logical(b>0)];
dt[, sum(b), by=as.factor(b>0)];
compFun = function(x,y) x>y; dt[, sum(b), by=compFunc(b,0)];
#FALSE -1225
#TRUE 1275
但这不是
dt[, sum(b), by=(b>0)];
#TRUE 1
#FALSE 0
看起来 .SD 在最后一种情况下没有“b”列。 我在这里想念什么?这不是不一致的行为吗?
谢谢
【问题讨论】:
-
它似乎在开发版本上工作
-
这是bug #497,最近在devel version 中修复。
标签: r data.table