2016-12-17 78 views
-1

我有一个csv文件导入为data.frame。当我通过如下指定key将其转换为data.table时,行顺序变得混乱。data.table行顺序越来越乱了

setDT(DT, head1) 

但是,如果按如下方式转换为data.table,行顺序不会受到干扰。

setDT(DT) 
setkey(DT, head1) 

现在执行以下操作,我收到一条警告,说行命令无效并被更正。

setDT(DT, head1) 
setkey(DT, head1) 

Warning message: 
In setkeyv(x, cols, verbose = verbose, physical = physical) : 
    Already keyed by this key but had invalid row order, key rebuilt. 
If you didn't go under the hood please let datatable-help know so the root cause can be fixed. 

这是怎么发生的?

+2

只需查看您尝试使用的功能的手册,特别是示例,您将节省一些时间。 – jangorecki

回答

2

您正在使用setDT功能不正确。第二个参数是keep.rownames,而不是key。除了命名键参数外,还必须将其作为字符串传递。像这样:

setDT(DT, key='head1') 

有关详细信息,请参见?setDT