Quantmod周期在使用R的数据挖掘一书中运行R代码时返回

时间:2014-04-13 02:38:42

标签: r quantmod

我尝试在使用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])
}

1 个答案:

答案 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.CalendarReturnstable.DownsideRisk的源代码,找到解决方案,它对我有用,也许你需要它。

将上述代码更改为:

    R <- as.xts(rets)
    colnames(R) <- 'Equity'
    table.DownsideRisk(R)
    table.CalendarReturns(R)