このコードを再構築しようとしています。私は多くのエラーに直面しましたが、これは私の日を取りました。
これはエラーを生成するコマンドです。
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);
}
私は何をすべきか?