将xts转换为data.table时出错

时间:2016-07-20 04:11:30

标签: r data.table xts

library(data.table)
library(xts)

x <- xts(c(1:2,4:7,9:11), c(Sys.Date()+1:2,Sys.Date()+4:7,Sys.Date()+9:11))

as.data.table.xts(x)
Error: could not find function "as.data.table.xts"

但是,从data.table到xts的转换有效:

y <- data.table(c(Sys.Date()+1:2,Sys.Date()+4:7,Sys.Date()+9:11),c(1:2,4:7,9:11))
as.xts.data.table(y)
           V2
2016-07-21  1
2016-07-22  2
2016-07-24  4
2016-07-25  5
2016-07-26  6
2016-07-27  7
2016-07-29  9
2016-07-30 10
2016-07-31 11

packageVersion("data.table")
[1] ‘1.9.7’

2 个答案:

答案 0 :(得分:8)

问题是你直接调用一个方法,你通常不应该这样做。 as.data.table.xts未从data.table命名空间导出,但它已注册为S3方法。这意味着在xts对象上调用as.data.table将调度到as.data.table.xts

identical(as.data.table(x), data.table:::as.data.table.xts(x))
# [1] TRUE

答案 1 :(得分:2)

我们可以使用as.data.table。在data.table中,不允许使用rownames,因此它会创建一个'index'列作为第一列

as.data.table(x)
#       index V1
#1: 2016-07-21  1
#2: 2016-07-22  2
#3: 2016-07-24  4
#4: 2016-07-25  5
#5: 2016-07-26  6
#6: 2016-07-27  7
#7: 2016-07-29  9
#8: 2016-07-30 10
#9: 2016-07-31 11