У меня есть 2 числовых вектора, один из которых хранит значения для вычисления максимума, а другие длины окна прокатки для вычисления этих максимумов на основе проката. Ниже приведен пример кода. Обычно я пытаюсь ускорить код внутри system.time. Есть ли какая-то готовая функция или векторизованный способ сделать то же самое?Каков самый быстрый способ в R рассчитать максимальную скорость прокатки с переменным размером окна прокатки?
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
}
})
+1 Хороший вопрос. Это интересная проблема, чтобы попытаться оптимизировать! –