这是我在data.table 1.9.2
中注意到的一些有趣行为> testFun <- function(val) {
if (val == 'geteeee') return(data.table(x=4,y=3))
if (val == 'get') return(data.table(y=3,x=4))
}
> tbl = data.table(val=c('geteeee', 'get'))
> tbl[, testFun(val), by=val]
val x y
1: geteeee 4 3
2: get 3 4
>
当每次调用testFun返回的数据表的列顺序混合在一起(但具有相同的名称和列数)时,data.table将这些表静默绑定在一起,而不考虑它们是否无序。这可能是为了提高速度,但我发现这种行为非常意外,并且至少会发出警告。
有没有一种方法可以让data.table在发生这种情况时发出警告或错误,或者(更好的是)它是否应该通过重新排序列来适当地处理这种情况,以便名称排成一行?如果我正确地理解了这个功能,这就是rbind的作用。