X-Git-Url: https://git.auder.net/?p=talweg.git;a=blobdiff_plain;f=pkg%2FR%2FcomputeForecast.R;h=0585e1bdfee0391a780eacea7f30dac6c7047d5f;hp=1a7d8bac78f80ddb6b6e68109291a41cc52e81ed;hb=25b75559e2d9bf84e2de35b851d93fefdae36e17;hpb=66877df35f2fc9561728537c713c963230b0de45 diff --git a/pkg/R/computeForecast.R b/pkg/R/computeForecast.R index 1a7d8ba..0585e1b 100644 --- a/pkg/R/computeForecast.R +++ b/pkg/R/computeForecast.R @@ -21,7 +21,12 @@ #' @param horizon Number of time steps to predict #' @param ... Additional parameters for the forecasting models #' -#' @return An object of class Forecast +#' @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 +#' } #' #' @examples #' ts_data = system.file("extdata","pm10_mesures_H_loc.csv",package="talweg") @@ -38,7 +43,7 @@ #' #do_something_with_pred #' }} #' @export -computeForecast = function(data, indices, forecaster, pjump=NULL, +computeForecast = function(data, indices, forecaster, pjump, memory=Inf, horizon=data$getStdHorizon(), ...) { # (basic) Arguments sanity checks @@ -52,21 +57,17 @@ computeForecast = function(data, indices, forecaster, pjump=NULL, if (!is.character(forecaster)) stop("forecaster (name) should be of class character") #pjump could be NULL - pred = list() - forecaster = new(paste(forecaster,"Forecaster",sep=""), data=data, - pjump = - if (is.null(pjump)) - function() {} - else - getFromNamespace(paste("get",pjump,"JumpPredict",sep=""), "talweg")) + pred = Forecast$new() + 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) { - #pred$append(...) is slow; TODO: use R6 class - pred[[length(pred)+1]] = list( - "serie" = forecaster$predict(today, memory, horizon, ...), - "params" = forecaster$getParameters(), - "index" = today + pred$append( + new_serie = forecaster$predictSerie(today, memory, horizon, ...), + new_params = forecaster$getParameters(), + new_index = today ) } - new("Forecast",pred=pred) + pred }