#' Data #' #' Data encapsulation #' #' @field data List of #' \itemize{ #' \item time: vector of times #' \item serie: centered series #' \item level: corresponding levels #' \item exo: exogenous variables #' \item exo_hat: predicted exogenous variables #' } #' #' @docType class #' @importFrom R6 R6Class #' #' @export Data = R6::R6Class("Data", private = list( .data = list() ), public = list( getSize = function() getSizeData(private) , getStdHorizon = function() getStdHorizonData(private) , append = function(new_time, new_centered_serie, new_level, new_exo, new_exo_hat) appendData(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat) , getTime = function(index) getTimeData(self, private, index) , getCenteredSerie = function(index) getCenteredSerieData(self, private, index) , getLevel = function(index) getLevelData(self, private, index) , getSerie = function(index) getSerieData(self, private, index) , getExo = function(index) getExoData(self, private, index) , getExoHat = function(index) getExoHatData(self, private, index) ) ) #' Number of series in the dataset #' #' @param private List of private members in current object getSizeData = function(private) length(private$.data) #' 'Standard' horizon, from t+1 to midnight #' #' @inheritParams getSizeData getStdHorizonData = function(private) 24 - as.POSIXlt( private$.data[[1]]$time[1] )$hour + 1 #' Acquire a new vector of lists (time, centered_serie, level, exo, exo_hat) #' #' @inheritParams getSizeData #' @param new_time Time #' @param new_centered_serie Centered serie #' @param new_level Level #' @param new_exo Exogneous variables #' @param new_exo_hat Predicted exogenous variables appendData = function(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat) { private$.data[[length(private$.data)+1]] <- list("time"=new_time, "centered_serie"=new_centered_serie,"level"=new_level,"exo"=new_exo,"exo_hat"=new_exo_hat) } #' Time values at specified index #' #' @inheritParams getSizeData #' @param index Return value at this index getTimeData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$time } #' Centered serie values at specified index #' #' @inheritParams getTimeData getCenteredSerieData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$centered_serie } #' Level of the serie at specified index #' #' @inheritParams getTimeData getLevelData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$level } #' Serie values (centered+level) at specified index #' #' @inheritParams getTimeData getSerieData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$centered_serie + data[[index]]$level } #' Exogenous measures at specified index #' #' @inheritParams getTimeData getExoData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$exo } #' Exogeous predictions at specified index #' #' @inheritParams getTimeData getExoHatData = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$exo_hat }