時系列クラスをプログラムしたいと思います。アイデアは、たとえば、式と他の時系列オブジェクトを使用してオブジェクトをインスタンス化することです。
(2 つの時系列)
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 を適切に使用する方法を教えていただければ、非常に役に立ちます。