【问题标题】:Error in as.xtsas.xts 中的错误
【发布时间】:2013-01-18 17:38:55
【问题描述】:

我有一个 xts 对象,close(带有 POSIXct 索引)。当我运行 quantmod 命令specifyModel(close[,1] ~ close[,2]):

时出现此错误
 Error in UseMethod("as.xts") : 
  no applicable method for 'as.xts' applied to an object of class "function".

                     ALBK ANDHRABANK AXISBANK BANKBARODA
2007-01-02 10:01:00 90.89      87.33   468.55     243.95
2007-01-02 10:02:00 90.80      86.92   467.75     243.70
2007-01-02 10:03:00 90.45      86.77   468.65     243.60
2007-01-02 10:04:00 90.31      86.94   468.32     243.95
2007-01-02 10:05:00 90.27      87.05   468.60     244.00
2007-01-02 10:06:00 90.23      87.00   468.00     243.65
2007-01-02 10:07:00 90.24      86.89   467.50     243.60
2007-01-02 10:08:00 89.99      86.77   467.05     243.00
2007-01-02 10:09:00 90.05      86.80   467.40     243.00
2007-01-02 10:10:00 90.20      87.00   467.00     243.00

这个错误是什么意思,我该如何解决?

【问题讨论】:

    标签: r time-series xts zoo quantmod


    【解决方案1】:

    因为close 是基本 R 函数的名称,所以会感到困惑。 (可能是一个错误,但我不确定specifyModel 的使用范围有多广)

    > close <- getSymbols("SPY", src="yahoo", auto.assign=FALSE)
    > specifyModel(close[, 1] ~ close[, 2])
    Error in UseMethod("as.xts") : 
      no applicable method for 'as.xts' applied to an object of class "function"
    

    通过重命名 xts 对象来修复

    > dat <- close
    > specifyModel(dat[, 1] ~ dat[, 2])
    
    quantmod object:        Build date:   
    
    Model Specified: 
         dat[, 1] ~ dat[, 2] 
    
    Model Target:  [ dat 0.1         Product:  dat 
    Model Inputs:   
    
    Fitted Model: 
    
        None Fitted
    > 
    

    【讨论】:

    • 假设我在 dat 中有 4 列
    • AFAICT,这不是 specifyModel 的用途。但是,除了唯一的示例之外,我还没有看到它在其他任何地方使用过——你呢?
    • 事实上,请注意,尽管我的回答避免了您遇到的错误,但它实际上并没有做任何有用的事情(请参阅“未安装”部分?)。我认为这个想法是它使用 getSymbols 下载数据并直接使用它。所以,而不是specifyModel(dat[, 1] ~ dat[, 2]),它应该是specifyModel(SPY ~ QQQ),其中SPYQQQ 要么是.GlobalEnv 中的对象,要么是getSymbols 可以下载的东西。就像我说的,我觉得这个功能用的不多。
    • 我有一个包含许多列的数据框 dat,每一列代表一个特定公司的数据。如果 dat 中的列数发生变化,则必须自动更新指定模型中的公式变量。公式 = dat[,1] ~ dat[,2]。它也可能像公式 = dat[,1] ~ dat[,2] + dat[,3] + dat[,4]。要更改循环中的公式变量,我不能在 specificModel 中使用预定义名称。
    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 2020-02-17
    • 2020-11-19
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多