data.table和聚合来自的结果中的无序列

时间:2014-04-16 01:35:35

标签: r data.table

这是我在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的作用。

0 个答案:

没有答案