我想编程一个时间系列类。这个想法是,我实例用表达和一些其他的时间序列对象的对象,例如替代,eval,bquote,do.call ...替换表达式的一些指导
(两个时间序列)
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)
的问题是,我该怎么EVAL用表达?我尝试了以下内容:
#(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适当的,这将是非常有益的。
为什么不直接使用已经属于'zoo'的'rollapply'函数?这将做你需要的。 – Shane 2010-01-22 00:11:14
是的,也许这是过度复杂。但是我想用两次exprTs对象。首先是获取时间序列数据,其次是产生一个操作树和原始时间序列树,用于文档目的。 – 2010-01-22 07:04:33