我尝试使用Quantmod和TTR计算R中的Premium Stochastic,但我不断收到以下错误:
>tmp=EMA(EMA(((marketdata$Close-LL)/(HH-LL)*100-50)*0.1,5),5)
Error in EMA(((marketdata$Close - LL)/(HH - LL) * 100 - 50) * 0.1, 5) :
Invalid 'n'
marketdata是包含OHLC数据的数据框。它在使用csv文件时工作正常,但在将yahoo财务数据导入数据框时,它似乎具有不同的列长度。我该如何解决这个问题?
答案 0 :(得分:0)
我查看了EMA
的源代码,并说:
if (n < 1 || n > NROW(x))
stop("Invalid 'n'")
在您的情况下,n
定义为5
。这意味着n < 1
为FALSE
。因此,n > nrow(x)
。
但是......那很奇怪。您正在提供向量,向量的nrow
为NULL
。事实证明,如果您阅读?EMA
,x
必须是一个矩阵。
所有这一切的教训是,如果出现问题,您应该始终仔细阅读函数的帮助页面,尤其是对于包。如果你在那里找不到答案,可以通过输入函数名来查看源代码;通常这足以找到哪一行引发错误。
另外,请尝试rollmean
中的zoo
,其中一个效果非常好:
library(zoo)
a <- 1:10
rollmean(a,5)
# 3 4 5 6 7 8