Я бы хотел запрограммировать класс временных рядов. Идея состоит в том, что я создаю экземпляр объекта с выражением и некоторыми другими объектами временных рядов, например
(два временных ряда)
x <- ts(rnorm(10), frequency = 4, start = c(1959, 2))
y <- ts(rnorm(10), frequency = 4, start = c(1959, 2))
(временной ряд, определенный как сумма x и y)
z <- exprTs("x+y", parents=list(x=x, y=y))
(получить часть серии)
window(z, start=1960, end=1960.75)
Проблема в том, как я могу оценить выражение? Я попробовал следующее:
#(constructor for class)
exprTs <- function(expr, parents) {
res = list(expr=expr, parents=parents)
class(res) <- "exprTs"
res
}
#(window method)
window.exprTs <- function(z, ...) {
eval(substitute(z$expr, lapply(z$parents, window, ...)))
#do.call(z$expr, lapply(z$parents, window, ...))
}
Я не могу заставить метод окна работать.
Если бы вы могли научить меня, как правильно использовать замену, eval, do.call, это было бы очень полезно.