У меня есть следующий код, который берет кадр данных с именем dft1, а затем создает результирующий кадр данных с именем dfb1. Я хочу повторить один и тот же код для нескольких входных фреймов данных, таких как dft1, dft2, все индексированные числом ближе к концу, а затем сохранить результаты с использованием одного и того же шаблона, т.е. dfb1, dfb2, .... Я пробовал много методов, таких как использование dapply или для циклов, но, учитывая характер кода внутри, я не смог получить ожидаемые результаты.
#define the function for rolling
window <- 24
rolling_lm <-
rollify(.f = function(R_excess, MKT_RF, SMB, HML) {
lm(R_excess ~ MKT_RF + SMB + HML)
}, window = window, unlist = FALSE)
#rolling over the variable
dfb1 <-
dft1 %>%
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)
mget
используется для внесения отдельных фреймов данных в сам список, поэтому, если они у вас уже есть, то это хорошо. Вы могли бы сделатьsetNames(lapply(result, apply_fun), paste0("dfb", 1:n))
. Можете ли вы попробовать и дайте мне знать, если это работает? Также вmget
попытке я потерял скобку, она должна была бытьsetNames(lapply(mget(paste0("dft", 1:n)), apply_fun), paste0("dfb", 1:n))
27.03.2019