【问题标题】:Error in .xts index length must match number of observations.xts 索引长度中的错误必须与观察次数匹配
【发布时间】:2016-07-14 18:04:27
【问题描述】:

在处理时间序列数据时,这个错误是什么意思?它与某些具有NA 的列有关吗?这个SO post 为其他人解决了这个问题,但我特别希望有人解释长度可能是错误的,以及第二个错误是否是由第一个错误引起的强>。

> add.signal(strat, name="sigFormula", arguments=list(columns=c("ADX.adx","rsi"), 
+     formula="ADX.adx>25 && rsi<50"), label="enterLONG")
[1] "tempEnv"
> test <- applySignals(strat, mktdata=test)

Error in .xts(eval(parse(text = formula), as.list(data)), index = .index(data)) : 
  index length must match number of observations
Error in `colnames<-`(`*tmp*`, value = seq(ncol(tmp_val))) : 
  attempt to set 'colnames' on an object with less than two dimensions

> View(test)
> colnames(test)
 [1] "Open"                 "High"                 "Low"                  "Close"               
 [5] "Volume"               "rsi"                  "tr.ATR.ind"           "atr.ATR.ind"         
 [9] "trueHigh.ATR.ind"     "trueLow.ATR.ind"      "dn.bbInd"             "mavg.bbInd"          
[13] "up.bbInd"             "pctB.bbInd"           "DIp.adx"              "DIn.adx"             
[17] "DX.adx"               "ADX.adx"              "SMI.stoch.fastind"    "signal.stoch.fastind"

【问题讨论】:

    标签: r xts quantstrat


    【解决方案1】:

    解决方案是将&amp;&amp; 更改为&amp; 即:formula="ADX.adx&gt;25 &amp; rsi&lt;50"。感谢@Joshua Ulrich,我发现了原因:

    & 和 && 表示逻辑与。较短的形式执行元素比较的方式与算术运算符大致相同。较长的形式从左到右评估,仅检查每个向量的第一个元素。

    【讨论】:

    • 答案在?base::Logic
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2023-01-02
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多