我在R中观察到data.table的奇怪行为,我想知道这是不是一个bug。这是我使用的代码:
public List<Type> Ancestors(Type any)
{
var result = new List<Type>();
result.Add(any);
while (any != typeof(object))
{
any = any.BaseType;
result.Insert(0, any);
}
return result;
}
public int Compare(Type lhs, Type rhs)
{
if (rhs.IsSubclassOf(lhs))
{
return -1;
}
else if (lhs.IsSubclassOf(rhs))
{
return +1;
}
else
{
var lAncs = Ancestors(lhs);
var rAncs = Ancestors(rhs);
int ix = 0;
while (lAncs[ix] == rAncs[ix])
{
ix++;
}
return lAncs[ix].FullName.CompareTo(rAncs[ix].FullName);
}
}
我觉得奇怪的输出部分如下:
Dictionary<Type,List<Type>>
正如您所看到的,即使所有键完全相同,我最终也会得到重复的行。
如果在输出上重新运行聚合,我得
num_req <- fread("number_requests.csv")
num_req[, nrequests := sum(nrequests, na.rm=T), by = list(reqtype, server, timestamp)]
现在,如果我这样做
nrequests timestamp reqtype server
3: 22 1489276860 reqtype1 server1
4: 22 1489276860 reqtype1 server1
然后我没有得到任何重复的行。
一些信息:
数据集有75015360行,但即使使用子集( nrequests timestamp reqtype server
3: 44 1489276860 reqtype1 server1
4: 44 1489276860 reqtype1 server1
),如果我按引用使用分配,也显示相同的重复
我正在使用data.table版本1.10.4
问题是我是否滥用tmp2 <- num_req[, list(nrequests = sum(nrequests, na.rm=T)), by = list(reqtype, server, timestamp)]
运算符或者这是否是错误?
感谢您的帮助!