0

このコードを再構築しようとしています。私は多くのエラーに直面しましたが、これは私の日を取りました。

これはエラーを生成するコマンドです。

rf <- buildModel(data.model,method='randomForest',
         training.per=c(start(GSPC),index(GSPC["1999-12-31"])),
         ntree=50, importance=T)

エラーとトレースバック:

> traceback()
8: stop("character string is not in a standard unambiguous format")
7: as.POSIXlt.character(x, tz, ...)
6: as.POSIXlt(x, tz, ...)
5: as.POSIXct(as.POSIXlt(x, tz, ...), tz, ...)
4: as.POSIXct.default(x)
3: as.POSIXct(x)
2: as.POSIXorDate(intersect(as.character(start.date.index), as.character(end.date.index)))
1: buildModel(data.model, method = "randomForest", training.per = c(start(GSPC), 
   index(GSPC["1999-12-31"])), ntree = 50, importance = T)

ここでbuildModelのソースコードを見ました:

"buildModel" <-
function(x,method,training.per,...) {

 as.POSIXorDate <- function(x) {
  class.of.index <- class(index(model.data))
  if("POSIXt" %in% class.of.index) {
    if("POSIXlt" %in% class.of.index) {
      x <- as.POSIXlt(x)
    } else {
      x <- as.POSIXct(x)
    }
  } else {
    x <- as.Date(x)
  }
  x
}

model.id=deparse(substitute(x))
if(length(training.per) != 2) stop("training.per must be of length 2");
model.data <- x@model.data;
start.date.index <- index(model.data[which(index(model.data) >= as.POSIXorDate(training.per[1]))])
end.date.index <- index(model.data[which(index(model.data) <= as.POSIXorDate(training.per[2]))])
training.dates <- as.POSIXorDate(intersect(as.character(start.date.index),
                                           as.character(end.date.index)));
method <- as.character(paste("buildModel.",method,sep=''));
training.data <- model.data[training.dates];
formula <- x@model.formula
mcall <- do.call(method,list(quantmod=x,training.data=training.data, ...));
x@fitted.model <- mcall$fitted;
x@model.inputs <- as.character(mcall$inputs);
x@build.date = as.character(Sys.time());
x@model.id <- paste(class(mcall$fitted)[length(class(mcall$fitted))],
                           as.numeric(Sys.time()),sep='');
x@training.data <- (training.dates);
invisible(x);
}

私は何をすべきか?

4

0 に答える 0