- [[python - concurrent futures]], [[python - concurrents futures ThreadPoolExecutor submit]] # Problem How to parallel loop in R? One option is to use `parallel::mclapply`. Note that `mclapply` uses forking, which is efficient on Unix-like systems (Linux, macOS) but not suitable for Windows. On Windows, mclapply falls back to lapply and doesn't provide parallel execution. ```r library(parallel) n_cores <- detectCores() - 2 # leave 2 cores unused so it doesn't use all resources and crash the system # example 1: function with 1 parameter func <- function(n) { print(n) idx <- sample(1:nrow(mtcars), size = nrow(mtcars), replace = TRUE) results <- coef(lm(mpg ~ cyl, mtcars[idx, ])) return(results) } n <- 5 mclapply(1:n, func, mc.cores = n_cores) # example 2: function with multiple parameters func <- function(x, y) { return(x + y) } constant <- 10 numbers <- 1:10 mclapply(numbers, function(num) func(num, constant), mc.cores = n_cores) # example 3: mixing parameters func <- function(x, y, z) { return(x + y + z) } constant <- 0.1 numbers1 <- 1:10 * 100 numbers2 <- 1:10 mclapply(1:length(numbers1), function(i) func(numbers1[i], numbers2[i], constant), mc.cores = n_cores) ``` # Resources