R data.table包和复杂值

时间:2015-09-14 17:43:59

标签: r data.table

我是数据表包的新手,到目前为止令人难以置信!有一个故障...

data.table似乎不喜欢复数。例如,代码:

DT <- data.table(x = as.complex(1:5))
DT[1]

产生错误:

Error in `[.data.table`(DT, 1) : Unknown column type 'complex'

我已经搜索过高低,除非我是一个巨大的白痴,否则我找不到任何相关信息,除了一个模糊的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

这很奇怪,因为在我的实际数据帧上使用setkey时没有出现此错误,该数据帧的列只包含复数值,而是在尝试dcast时出错,但即使这个简单的代码也没有#39工作我不会再向你显示我的其他错误了!

我认为我只是必须接受数据。表格还没准备好复数吗?或者通过某种机会这是一些旧的虫子的重铺?

感谢您的耐心等待!

1 个答案:

答案 0 :(得分:5)

这是一个错误。在最新的开发版本中看起来像it was fixed。您可以使用包 devtools 从github安装。

Install instructions

packageVersion("data.table")
# [1] ‘1.9.5’
dt <- data.table(x = as.complex(1:5))
dt[1]
#       x
# 1: 1+0i