我有 2 个数值向量,一个存储用于计算最大值的值,另一个存储滚动窗口的长度以滚动计算这些最大值。下面是一些示例代码。通常我试图加快system.time中的代码。是否有一些现成的功能或矢量化的方式来做同样的事情?
a <- rep(1:5,20000)
set.seed(123)
b <- rep(sample(1:50),2000)
system.time({
out <- vector(mode='numeric', length=NROW(a))
for(i in seq(a)) {
if (i-b[i]>=0) out[i] <- max(a[(i-b[i]+1):i])
else out[i] <- NA
}
})