假设 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功能。有更快的解决方案吗?
答案 0 :(得分:1)
我们可以使用roll_max
RcppRoll
library(RcppRoll)
roll_max(v1, n=3)
v1 <- 1:10