我有一个相当基本data.table
的 R 语言,有 250k 行和 90 列。我正在尝试data.table
在其中一个属于 class 的列上键入character
。当我打电话时:
setkey(my.dt,my.column)
我收到以下神秘的错误消息:
"Error in setkeyv(x, cols, verbose=verbose) :
reorder received irregular lengthed list"
我找到了带有此消息的源代码提交,但无法完全破译它的含义。我的键列不包含 NA 或空白值,看起来非常合理(它包含股票代码),并且在默认order()
命令下表现良好。
更令人沮丧的是,以下代码正确完成:
first.dt <- my.dt[1:100000]
setkey(first.dt,my.column)
second.dt <- my.dt[100001:nrow(my.dt]
setkey(second.dt,my.column)
我不知道这里会发生什么。有小费吗?
编辑 1:我已经确认键中的每个值都符合相当标准的格式:
> length(grep("[A-Z]{3,4}\\.[A-Z]{2}",my.dt$my.column)) == nrow(my.dt)
[1] TRUE
编辑 2:我的系统信息如下(请注意,我实际上使用的是 Windows 7)。我正在使用 data.table 1.8 版。
> Sys.info()
sysname release version nodename machine login
"Windows" "Server 2008 x64" "build 7600" "WIN-9RH28AH0CKG" "x86-64" "Administrator"
user effective_user
"Administrator" "Administrator"