我将csv
文件导入为data.frame
。当我通过如下指定data.table
将其转换为key
时,行顺序会搞砸。
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.
为什么会这样?
答案 0 :(得分:2)
您错误地使用了setDT
功能。第二个参数是keep.rownames
,而不是key
。除了命名key参数外,还必须将其作为字符串传递。像这样:
setDT(DT, key='head1')
有关详细信息,请参阅?setDT
。