我尝试在使用R
的数据挖掘一书中运行以下代码yearlyReturn(trade.res@trading$Equity)
NextMethod中的错误(" [< - "):矩阵上的下标数量不正确 执行由annualReturn调用的PeriodReturn时实际发生错误。导致问题的指令是:
ret[1,] <- firstval
## periodReturn()
xx <- try.xts(x)
if (inherits(x, "ts")) {
x <- na.omit(try.xts(x))
xtsAttributes(x) <- CLASS(x) <- NULL
xx <- x
TS <- TRUE
}
else TS <- FALSE
if (has.Op(xx) & has.Cl(xx)) {
getFirst <- function(X) Op(X)
getLast <- function(X) Cl(X)
}
else getFirst <- getLast <- function(X) X[, 1]
on.opts <- list(daily = "days", weekly = "weeks", monthly = "months",
quarterly = "quarters", yearly = "years", annually = "years")
ep <- endpoints(xx, on = on.opts[[period]])
ret <- Delt_(Cl(to_period(xx, period = on.opts[[period]],
...)), type = type)
if (leading) {
firstval <- as.numeric(Delt_(getFirst(xx[1]), getLast(xx[ep[2]]),
type = type))
ret[1, ] <- firstval
}
colnames(ret) <- paste(period, "returns", sep = ".")
if (TS)
xx <- 1
tmp.ret <- reclass(ret, xx[ep[-1]])
if (is.null(subset))
subset <- "/"
reclass(as.xts(tmp.ret)[subset])
}
答案 0 :(得分:1)
在本书#34;使用R&#34;进行数据挖掘时运行示例代码时,我得到了相同的错误信息。
在查看annualReturn源代码后,我发现如果我将trade.res@trading$Equity
转换为as.xts(trade.res@trading$Equity)
,则错误消息会消失。
如:
yearlyReturn(as.xts(trade.res@trading$Equity))
BTW,使用示例代码解决此错误后还有另一个错误。
错误相关代码是:
table.CalendarReturns(rets)
table.DownsideRisk(rets)
我查看table.CalendarReturns
和table.DownsideRisk
的源代码,找到解决方案,它对我有用,也许你需要它。
将上述代码更改为:
R <- as.xts(rets)
colnames(R) <- 'Equity'
table.DownsideRisk(R)
table.CalendarReturns(R)