1) Попробуйте rollapply
в пакете зоопарка:
> library(zoo)
> rollapply(zoo(1:5), 3, function(x) x[2] * x[2] - x[1] * x[3])
2 3 4
1 1 1
coredata(z)
дает часть данных, т.е. c(1, 1, 1)
, а time(z)
дает часть времени, т.е. c(2, 3, 4)
.
2) Еще один способ сделать это в зоопарке:
> z <- zoo(1:5)
> z*z - lag(z) * lag(z,-1)
2 3 4
1 1 1
3) Этот последний подход также работает в классе TS, найденном в ядре R:
> tt <- ts(1:5)
> tt * tt - lag(tt) * lag(tt, -1)
Time Series:
Start = 2
End = 4
Frequency = 1
[1] 1 1 1