R 数据表1.8.11和汇总问题 更新:错误已修复。见下文。

R 数据表1.8.11和汇总问题 更新:错误已修复。见下文。,r,data.table,R,Data.table,下面是我在数据中发现的一些有趣的行为。表1.8.11(R11012014-01-28)。by子句中包含的变量顺序会更改聚合结果: > foo = data.table(a=rep(c(0,1,0,1),2), b=rep(c(T,T,F,F),2), c=c(1,1,1,1,1,1,1,1)) > foo a b c 1: 0 TRUE 1 2: 1 TRUE 1 3: 0 FALSE 1 4: 1 FALSE 1 5: 0 TRUE 1 6: 1 TR

下面是我在数据中发现的一些有趣的行为。表1.8.11(R11012014-01-28)。by子句中包含的变量顺序会更改聚合结果:

>   foo = data.table(a=rep(c(0,1,0,1),2), b=rep(c(T,T,F,F),2), c=c(1,1,1,1,1,1,1,1))
>   foo
   a     b c
1: 0  TRUE 1
2: 1  TRUE 1
3: 0 FALSE 1
4: 1 FALSE 1
5: 0  TRUE 1
6: 1  TRUE 1
7: 0 FALSE 1
8: 1 FALSE 1
>   foo[, .N, by=list(b, a)]
       b a N
1:  TRUE 0 1
2:  TRUE 1 1
3: FALSE 0 1
4: FALSE 1 1
5:  TRUE 0 1
6:  TRUE 1 1
7: FALSE 0 1
8: FALSE 1 1
>   foo[, .N, by=list(a, b)]
   a     b N
1: 0  TRUE 2
2: 1  TRUE 2
3: 0 FALSE 2
4: 1 FALSE 2
> 
data.table(1.8.10)的稳定版本中不会出现这种情况。

感谢您的报告。这在v1.8.11commit 1103中已经修复。发件人: o修复了由于最近对fastorder的修复而导致的错误,即使用逻辑类型进行聚合有时会导致错误的结果。这就结束了#5307。感谢Clayton Stanley的报道:



不,对我来说不是。Windows 7上的data.table_1.8.11。我得到了预期的第二个结果。你真的在新的课程中看到了这一点吗?从问题中复制/粘贴?使用R_3.0.2顺便说一句,我可以确认相同的结果。感谢catchOk,我使用的是2013-10-16版本的1001版,其效果与预期一致。天哪,我已经落后100次了…@Ricardosporta谢谢你提交这一期。我还在帖子中添加了版本信息。这个问题似乎离题了,因为它是一个bug报告。感谢您的及时修复。验证更改是否也适用于我的实际用例。
require(data.table) # commit 1103 v1.8.11
foo[, .N, by=list(b,a)]
       b a N
1:  TRUE 0 2
2:  TRUE 1 2
3: FALSE 0 2
4: FALSE 1 2

foo[, .N, by=list(a,b)]
   a     b N
1: 0  TRUE 2
2: 1  TRUE 2
3: 0 FALSE 2
4: 1 FALSE 2