intermediate: R6, too slow
[talweg.git] / pkg / R / Data.R
CommitLineData
f17665c7 1#' Data
3d69ff21 2#'
f17665c7 3#' Data encapsulation
3d69ff21
BA
4#'
5#' @field data List of
6#' \itemize{
7#' \item time: vector of times
8#' \item serie: centered series
9#' \item level: corresponding levels
f17665c7 10#' \item exo: exogenous variables
3d69ff21 11#' \item exo_hat: predicted exogenous variables
3d69ff21
BA
12#' }
13#'
f17665c7
BA
14#' @docType class
15#' @importFrom R6 R6Class
16#'
17#' @export
25b75559 18Data = R6::R6Class("Data",
35eb1443 19 private = list(
25b75559 20 .data = list()
35eb1443 21 ),
f17665c7 22 public = list(
3d69ff21 23 getSize = function()
25b75559 24 getSizeData(private)
35eb1443 25 ,
e030a6e3 26 getStdHorizon = function()
25b75559 27 getStdHorizonData(private)
66877df3
BA
28 ,
29 append = function(new_time, new_centered_serie, new_level, new_exo, new_exo_hat)
25b75559 30 appendData(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat)
35eb1443 31 ,
3d69ff21 32 getTime = function(index)
25b75559 33 getTimeData(self, private, index)
66877df3 34 ,
3d69ff21 35 getCenteredSerie = function(index)
25b75559 36 getCenteredSerieData(self, private, index)
66877df3 37 ,
3d69ff21 38 getLevel = function(index)
25b75559 39 getLevelData(self, private, index)
66877df3 40 ,
3d69ff21 41 getSerie = function(index)
25b75559 42 getSerieData(self, private, index)
66877df3 43 ,
1e20780e 44 getExo = function(index)
25b75559 45 getExoData(self, private, index)
66877df3
BA
46 ,
47 getExoHat = function(index)
25b75559 48 getExoHatData(self, private, index)
3d69ff21
BA
49 )
50)
35eb1443 51
35eb1443 52#' Number of series in the dataset
25b75559
BA
53#'
54#' @param private List of private members in current object
55getSizeData = function(private)
35eb1443
BA
56 length(private$.data)
57
58#' 'Standard' horizon, from t+1 to midnight
25b75559
BA
59#'
60#' @inheritParams getSizeData
61getStdHorizonData = function(private)
35eb1443
BA
62 24 - as.POSIXlt( private$.data[[1]]$time[1] )$hour + 1
63
64#' Acquire a new vector of lists (time, centered_serie, level, exo, exo_hat)
25b75559
BA
65#'
66#' @inheritParams getSizeData
67#' @param new_time Time
68#' @param new_centered_serie Centered serie
69#' @param new_level Level
70#' @param new_exo Exogneous variables
71#' @param new_exo_hat Predicted exogenous variables
72appendData = function(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat)
66877df3 73{
25b75559 74 private$.data[[length(private$.data)+1]] <- list("time"=new_time,
66877df3
BA
75 "centered_serie"=new_centered_serie,"level"=new_level,"exo"=new_exo,"exo_hat"=new_exo_hat)
76}
77
78#' Time values at specified index
25b75559
BA
79#'
80#' @inheritParams getSizeData
81#' @param index Return value at this index
82getTimeData = function(o, private, index)
66877df3
BA
83{
84 index = dateIndexToInteger(index, o)
85 private$.data[[index]]$time
86}
87
88#' Centered serie values at specified index
25b75559
BA
89#'
90#' @inheritParams getTimeData
91getCenteredSerieData = function(o, private, index)
66877df3
BA
92{
93 index = dateIndexToInteger(index, o)
25b75559 94 private$.data[[index]]$centered_serie
66877df3
BA
95}
96
97#' Level of the serie at specified index
25b75559
BA
98#'
99#' @inheritParams getTimeData
100getLevelData = function(o, private, index)
66877df3
BA
101{
102 index = dateIndexToInteger(index, o)
103 private$.data[[index]]$level
104}
105
106#' Serie values (centered+level) at specified index
25b75559
BA
107#'
108#' @inheritParams getTimeData
109getSerieData = function(o, private, index)
66877df3
BA
110{
111 index = dateIndexToInteger(index, o)
25b75559 112 private$.data[[index]]$centered_serie + data[[index]]$level
66877df3
BA
113}
114
115#' Exogenous measures at specified index
25b75559
BA
116#'
117#' @inheritParams getTimeData
118getExoData = function(o, private, index)
66877df3
BA
119{
120 index = dateIndexToInteger(index, o)
121 private$.data[[index]]$exo
122}
123
124#' Exogeous predictions at specified index
25b75559
BA
125#'
126#' @inheritParams getTimeData
127getExoHatData = function(o, private, index)
66877df3
BA
128{
129 index = dateIndexToInteger(index, o)
130 private$.data[[index]]$exo_hat
131}