.xts 索引长度中的错误必须与观察数匹配
Error in .xts index length must match number of observations
在处理时间序列数据时,这个错误是什么意思?它与某些具有 NA
的列有关吗?这 为其他人解决了问题,但我特别希望有人 解释长度为什么会出错 ,以及 是否是第二个错误是由第一个.
引起的
> 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"
解决方案是将 &&
更改为 &
即:formula="ADX.adx>25 & rsi<50"
。感谢@Joshua Ulrich 我发现了原因:
&和&&表示逻辑与。较短的形式以与算术运算符大致相同的方式执行逐元素比较。较长的形式从左到右评估,仅检查每个向量的第一个元素。
在处理时间序列数据时,这个错误是什么意思?它与某些具有 NA
的列有关吗?这
> 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"
解决方案是将 &&
更改为 &
即:formula="ADX.adx>25 & rsi<50"
。感谢@Joshua Ulrich 我发现了原因:
&和&&表示逻辑与。较短的形式以与算术运算符大致相同的方式执行逐元素比较。较长的形式从左到右评估,仅检查每个向量的第一个元素。