'update'
[talweg.git] / pkg / R / computeForecast.R
index 0585e1b..ec6fa07 100644 (file)
 #' @param horizon Number of time steps to predict
 #' @param ... Additional parameters for the forecasting models
 #'
-#' @return A list with the following items
-#' \itemize{
-#'   \item serie: forecasted serie
-#'   \item params: corresponding list of parameters (weights, neighbors...)
-#'   \item index: corresponding index in data object
-#' }
+#' @return An object of class Forecast
 #'
 #' @examples
 #' ts_data = system.file("extdata","pm10_mesures_H_loc.csv",package="talweg")
@@ -50,18 +45,17 @@ computeForecast = function(data, indices, forecaster, pjump,
        horizon = as.integer(horizon)[1]
        if (horizon<=0 || horizon>length(data$getCenteredSerie(2)))
                stop("Horizon too short or too long")
-       indices = sapply( seq_along(indices), function(i) dateIndexToInteger(indices[i], data) )
-       if (any(indices<=0 | indices>data$getSize()))
+       integer_indices = sapply(seq_along(indices), function(i) dateIndexToInteger(indices[i],data))
+       if (any(integer_indices<=0 | integer_indices>data$getSize()))
                stop("Indices out of range")
-       indices = sapply(indices, dateIndexToInteger, data)
-       if (!is.character(forecaster))
-               stop("forecaster (name) should be of class character") #pjump could be NULL
+       if (!is.character(forecaster) || !is.character(pjump))
+               stop("forecaster (name) and pjump (function) should be of class character")
 
-       pred = Forecast$new()
+       pred = Forecast$new( dates=sapply( indices, integerIndexToDate, data ) )
        forecaster_class_name = getFromNamespace(paste(forecaster,"Forecaster",sep=""), "talweg")
        forecaster = forecaster_class_name$new(data=data,
                pjump = getFromNamespace(paste("get",pjump,"JumpPredict",sep=""), "talweg"))
-       for (today in indices)
+       for (today in integer_indices)
        {
                pred$append(
                        new_serie = forecaster$predictSerie(today, memory, horizon, ...),