【发布时间】:2013-01-11 04:05:56
【问题描述】:
如何使用rollapply(或其他一些 R 函数)随着函数在数据中的进展而增大窗口大小。换句话说,第一个应用适用于第一个元素,第二个适用于前两个元素,第三个适用于前三个元素,等等。
【问题讨论】:
如何使用rollapply(或其他一些 R 函数)随着函数在数据中的进展而增大窗口大小。换句话说,第一个应用适用于第一个元素,第二个适用于前两个元素,第三个适用于前三个元素,等等。
【问题讨论】:
如果您想申请 min 、 max 、 sum 或 prod,这些函数已经有它们的累积对应项:
cummin、cummax、cumsum 和 cumprod
要在增长/扩展窗口上应用更多奇特的功能,您可以简单地使用sapply
例如
# your vector of interest
x <- c(1,2,3,4,5)
sapply(seq_along(x), function(y,n) yourfunction(y[seq_len(n)]), y = x)
对于一个基本的动物园对象
x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1
x <- zoo(rnorm(5), x.Date)
# cumsum etc will work and return a zoo object
cs.zoo <- cumsum(x)
# convert back to zoo for the `sapply` solution
# here `sum`
foo.zoo <- zoo(sapply(seq_along(x), function(n,y) sum(y[seq_len(n)]), y= x), index(x))
identical(cs.zoo, foo.zoo)
## [1] TRUE
【讨论】:
除了@mnel 的回答:
对于更多奇特的功能,您可以简单地使用 sapply
如果 sapply 方法花费的时间太长,您最好迭代地制定函数。
【讨论】: