Добавьте команду, которую вы хотите применить к каждому фрейму данных, в функцию
apply_fun <- function(df) {
df %>%
mutate(rolling_ff =
rolling_lm(R_excess,
MKT_RF,
SMB,
HML)) %>%
mutate(tidied = map(rolling_ff,
tidy,
conf.int = T)) %>%
unnest(tidied) %>%
slice(-1:-23) %>%
select(date, term, estimate, conf.low, conf.high) %>%
filter(term != "(Intercept)") %>%
rename(beta = estimate, factor = term) %>%
group_by(factor)
}
Теперь примените функцию к каждому фрейму данных и сохраните результаты в списке
n <- 10
out <- setNames(lapply(mget(paste0("dft", 1:n)), apply_fun), paste0("dfb", 1:n))
Предполагая, что выиметь входные фреймы данных, такие как dft1
, dft2
... это выведет список фреймов данных, к которым вы теперь можете обращаться, выполнив out[['dfb1']]
, out[['dfb2']]
и так далее.Измените значение n
на основе количества dft
имеющихся у вас фреймов данных.
Если данные уже присутствуют в списке, мы можем избежать mget
, выполнив
setNames(lapply(result, apply_fun), paste0("dfb", 1:n))