It depends on what's actually being done. If there really is a function like estimate_GARCH_parameters_by_four_methods(...)
, then lapply()
is a great solution.
But if there isn't, then lapply()
often won't simplify code. For example:
results <- vector("list", 6000)
for (ii in seq_along(results)) {
# A whole bunch of prep logic
m1 <- estimate_GARCH_parameters_m1(...)
m2 <- estimate_GARCH_parameters_m2(...)
m3 <- estimate_GARCH_parameters_m3(...)
m4 <- estimate_GARCH_parameters_m4(...)
results[[ii]] <- list(m1, m2, m3, m4)
}
Writing a wrapper function and feeding it to lapply()
won't clarify this code.
estimate <- function(ii) {
# A whole bunch of prep logic
m1 <- estimate_GARCH_parameters_m1(...)
m2 <- estimate_GARCH_parameters_m2(...)
m3 <- estimate_GARCH_parameters_m3(...)
m4 <- estimate_GARCH_parameters_m4(...)
list(m1, m2, m3, m4)
}
results <- lapply(1:6000, estimate)
The for
block is obviously just an iterative loop, where the 1:6000
vector might be irrelevant. The lapply()
code makes the 1:6000
vector seem important.