如何获得N次观察的最大值

时间:2017-02-24 02:21:58

标签: r vector

假设 y t 是一个时间序列。我想要的是 x t = max( y t < / sub>, y t -1 ,..., y t < / em> - N )。我的代码是

x<-unlist(lapply(seq_along(y),function(i)max(y[seq.int(max(1L,i-N),i)])))

此代码使用lapply并且有重复读取,因此我认为它没有充分利用处理器的SIMD功能。有更快的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用roll_max

中的RcppRoll
library(RcppRoll)
roll_max(v1, n=3)

数据

v1 <- 1:10