【问题标题】:R data.table package and complex valuesR data.table 包和复数值
【发布时间】:2015-09-14 17:43:59
【问题描述】:

我是数据表包的新手,到目前为止它令人难以置信!顺利...

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 包的当前限制,还是已知的错误?

编辑:最初我认为按照 Richard 的建议更新到开发版本已经解决了这个问题,但是在接下来的几个步骤中我遇到了另一个错误。

我有一个大型数据表,它是快速傅立叶变换的结果。我最初编写了一个自定义函数,将其复杂的结果拆分为实数、虚数和绝对值,以解决这个错误。但是,现在我需要再次使用这些复数值来进行第二次 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 时收到错误,但即使这个简单的代码也不起作用我不会费心向你展示我的其他错误!

我认为我只需要接受 data.table 还没有准备好处理复数吗?或者,这是否是一些旧错误的重新浮出水面?

感谢您的耐心等待!

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    这是一个错误。在最新的开发版本中看起来像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
    

    【讨论】:

      猜你喜欢
      • 2016-08-01
      • 1970-01-01
      • 2013-05-12
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多