Рассмотрите возможность вызова метода внутри lapply
вызова для итерации по уникальным значениям дат, используемых для фильтрации фрейма данных в lm
вызовах:
# ORDER BY DATE ASC
dat <- with(dat, dat[order(Date),])
bundle <- function(curr_date) {
# REPLACING subset WITH FILTER FOR ALL DATES BEFORE CURRENT DATE
fit <- lm(y ~ x1 + x2 + x3, data = dat[dat$Date < curr_date,], model = FALSE)
# REPLACE FILTER FOR ALL DATES ON CURRENT DATE
pred <- predict(fit, newdata = dat[dat$Date == curr_date,], se.fit = TRUE)
# RETURN DATA FRAME OF RESULTS
data.frame(date = curr_date,
adj_r = summary(fit)$adj.r.squared,
fit = pred$fit,
se_fit = pred$se.fit)
}
# LAPPLY CALL
rolling_models_df_list <- lapply(unique(dat$Date)[-1], bundle)