【问题标题】:error in converting xts to data.table将 xts 转换为 data.table 时出错
【发布时间】:2016-11-23 03:41:15
【问题描述】:
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’

【问题讨论】:

    标签: r data.table xts


    【解决方案1】:

    问题是你直接调用了一个方法,你通常不应该这样做。 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
    

    【讨论】:

    • 感谢您的解释。
    【解决方案2】:

    我们可以使用as.data.table。在data.table 中,不允许使用行名,因此它会创建一个“索引”列作为第一列

    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(x)1.9.7 中被删除并被as.data.table(x) 替换。
    • @user227710 可能是这种情况,因为我也在使用相同的版本。
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 2018-06-20
    • 2022-01-07
    • 2021-08-05
    • 1970-01-01
    • 2013-12-10
    • 2020-09-01
    • 2020-07-17
    相关资源
    最近更新 更多