#' 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 = R6Class("Data", private = list( .data = "list" ), public = list( initialize = function(...) initialize(self, private, ...) , getSize = function() getSize(private) , getStdHorizon = function() getStdHorizon(private) , append = function(new_time, new_centered_serie, new_level, new_exo, new_exo_hat) append(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat) , getTime = function(index) getTime(self, private, index) , getCenteredSerie = function(index) getCenteredSerie(self, private, index) , getLevel = function(index) getLevel(self, private, index) , getSerie = function(index) getSerie(self, private, index) , getExo = function(index) getExo(self, private, index) , getExoHat = function(index) getExoHat(self, private, index) ) ) ##TODO: @param... @inheritParams... #' Initialize empty Data object initialize = function(o, private, ...) { private$.data <<- if (hasArg("data")) list(...)$data else list() invisible(o) } #' Number of series in the dataset getSize = function(private) length(private$.data) #' 'Standard' horizon, from t+1 to midnight getStdHorizon = 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) append = function(private, new_time, new_centered_serie, new_level, new_exo_hat, new_exo) { 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 getTime = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$time } #' Centered serie values at specified index getCenteredSerie = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$serie } #' Level of the serie at specified index getCenteredSerie = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$level } #' Serie values (centered+level) at specified index getCenteredSerie = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$serie + data[[index]]$level } #' Exogenous measures at specified index getCenteredSerie = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$exo } #' Exogeous predictions at specified index getCenteredSerie = function(o, private, index) { index = dateIndexToInteger(index, o) private$.data[[index]]$exo_hat }