我想编写一个时间序列课程。这个想法是我用表达式和其他一些时间序列对象实例化一个对象,例如
(两个时间序列)
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, ...))
}
我无法让窗口方法工作。
如果您能指导我如何适当地使用替代、评估、do.call,那将非常有帮助。