将 xts 转换为 data.table 时出错
error in converting xts to data.table
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’
我们可以使用as.data.table
。在 data.table
中,不允许使用行名,因此它会创建一个 '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
问题是你直接调用了一个方法,你通常不应该这样做。 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
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’
我们可以使用as.data.table
。在 data.table
中,不允许使用行名,因此它会创建一个 '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
问题是你直接调用了一个方法,你通常不应该这样做。 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