我是数据表包的新手,到目前为止它令人难以置信!有一个故障......
data.table似乎不喜欢复杂的数字.例如,代码:
DT <- data.table(x = as.complex(1:5))
DT[1]
Run Code Online (Sandbox Code Playgroud)
产生错误:
Error in `[.data.table`(DT, 1) : Unknown column type 'complex'
Run Code Online (Sandbox Code Playgroud)
我搜索了高低,除非我是一个巨大的白痴我找不到任何关于此的信息,除了一个模糊的github编辑:github
这只是data.table包的当前限制,还是已知错误?
编辑:最初我认为按照理查德的建议更新到开发版本已经解决了这个问题,但是在我接下来的几步之后又遇到了另一个错误.
我有一个大型数据表,它是快速傅里叶变换的结果.我最初写了一个自定义函数,将其复杂的结果分成实数,虚数和绝对值,以解决这个问题.但是,现在我再次需要这些复杂的值来进行第二次FFT,这就是我遇到问题的地方.
我从rbindlist获得了另一个警告消息,该消息还表示它不支持复杂的列,并且在尝试为此问题编写一些可重现的代码时,遇到了这个新错误:
stacktest<-data.table(x=complex(real=1:60, imaginary=-1:-60),y=LETTERS[1:10],z=rep(1:2,5))
setkey(stacktest, z)
Error in setkeyv(x, cols, verbose = verbose, physical = physical) :
Item 1 of list is type 'complex' which isn't yet supported
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我在我的实际数据帧上使用setkey时没有得到这个错误,该数据帧的列只包含复数值,而是在尝试dcast时出错,但即使这个简单的代码不起作用我也不会打扰你我的另一个错误!
我接受它我将不得不接受data.table还没准备好复杂的数字呢?或者通过某种机会这是一些旧bug的重铺?
谢谢你的耐心!
这是一个错误.看起来它已在最新的开发版本中修复.您可以使用软件包devtools从github安装.
packageVersion("data.table")
# [1] ‘1.9.5’
dt <- data.table(x = as.complex(1:5))
dt[1]
# x
# 1: 1+0i
Run Code Online (Sandbox Code Playgroud)