use R6 class; remove data first and last elements --> simplify
[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
18Data = R6Class("Data",
35eb1443
BA
19 private = list(
20 .data = "list"
21 ),
f17665c7 22 public = list(
3d69ff21 23 initialize = function(...)
35eb1443
BA
24 initialize(self, private, ...)
25 ,
3d69ff21 26 getSize = function()
66877df3 27 getSize(private)
35eb1443 28 ,
e030a6e3 29 getStdHorizon = function()
66877df3
BA
30 getStdHorizon(private)
31 ,
32 append = function(new_time, new_centered_serie, new_level, new_exo, new_exo_hat)
33 append(private, new_time, new_centered_serie, new_level, new_exo, new_exo_hat)
35eb1443 34 ,
3d69ff21 35 getTime = function(index)
66877df3
BA
36 getTime(self, private, index)
37 ,
3d69ff21 38 getCenteredSerie = function(index)
66877df3
BA
39 getCenteredSerie(self, private, index)
40 ,
3d69ff21 41 getLevel = function(index)
66877df3
BA
42 getLevel(self, private, index)
43 ,
3d69ff21 44 getSerie = function(index)
66877df3
BA
45 getSerie(self, private, index)
46 ,
1e20780e 47 getExo = function(index)
66877df3
BA
48 getExo(self, private, index)
49 ,
50 getExoHat = function(index)
51 getExoHat(self, private, index)
3d69ff21
BA
52 )
53)
35eb1443 54
66877df3
BA
55##TODO: @param... @inheritParams...
56
35eb1443 57#' Initialize empty Data object
66877df3 58initialize = function(o, private, ...)
35eb1443 59{
66877df3
BA
60 private$.data <<- if (hasArg("data")) list(...)$data else list()
61 invisible(o)
35eb1443
BA
62}
63
64#' Number of series in the dataset
66877df3 65getSize = function(private)
35eb1443
BA
66 length(private$.data)
67
68#' 'Standard' horizon, from t+1 to midnight
66877df3 69getStdHorizon = function(private)
35eb1443
BA
70 24 - as.POSIXlt( private$.data[[1]]$time[1] )$hour + 1
71
72#' Acquire a new vector of lists (time, centered_serie, level, exo, exo_hat)
66877df3
BA
73append = function(private, new_time, new_centered_serie, new_level, new_exo_hat, new_exo)
74{
75 private$.data[[length(private$.data)+1]] <<- list("time"=new_time,
76 "centered_serie"=new_centered_serie,"level"=new_level,"exo"=new_exo,"exo_hat"=new_exo_hat)
77}
78
79#' Time values at specified index
80getTime = function(o, private, index)
81{
82 index = dateIndexToInteger(index, o)
83 private$.data[[index]]$time
84}
85
86#' Centered serie values at specified index
87getCenteredSerie = function(o, private, index)
88{
89 index = dateIndexToInteger(index, o)
90 private$.data[[index]]$serie
91}
92
93#' Level of the serie at specified index
94getCenteredSerie = function(o, private, index)
95{
96 index = dateIndexToInteger(index, o)
97 private$.data[[index]]$level
98}
99
100#' Serie values (centered+level) at specified index
101getCenteredSerie = function(o, private, index)
102{
103 index = dateIndexToInteger(index, o)
104 private$.data[[index]]$serie + data[[index]]$level
105}
106
107#' Exogenous measures at specified index
108getCenteredSerie = function(o, private, index)
109{
110 index = dateIndexToInteger(index, o)
111 private$.data[[index]]$exo
112}
113
114#' Exogeous predictions at specified index
115getCenteredSerie = function(o, private, index)
116{
117 index = dateIndexToInteger(index, o)
118 private$.data[[index]]$exo_hat
119}