我怎样才能使这段代码 运行 并行? For循环

How can I make this code run in parallel ? For loop

我正在尝试 运行 这个简单的 for 循环作为一个并行过程,因为它需要大量的计算能力。有什么想法吗?

##Load files and libraries---
library(tidyverse)
library(caret)
library(insight)
library(MASS)
library(mfx)
library(furrr)

for (i in 1:16) {
      nested_inter$model[[i]]<- nb_thesis_inter(df= nested_nb$data[[i]], mdl= nested_nb$model[[i]])
      print (paste("Finished model ", i, "out of 16"))
    }

  #nested_inter<- nested_inter %>% 
  #  mutate(model= future_map2(.x= data, .y=model, .f = nb_thesis_inter))

你可以使用 pmap:

nested_nb %>% furrr::future_pmap(function(...){
  row <- list(...)
  nb_thesis_inter(df = row$data, mdl= row$model)
})

我要去 future.apply 包。

library(future.apply)
plan(multisession)

nested_inter$model = future_Map(nb_thesis_inter,
                                nested_nb$data,
                                nested_nb$model)

有两点需要注意。

  1. plan(multisession) 允许并行使用 Windows。请参阅 ?plan 了解所有选项。
  2. 我没有安装所有的包,因为示例不可重现。根据 nb_thesis_inter.
  3. 的默认参数顺序,可能需要将 future_Map 调用更改为 future_map(function (x, y) nb_thesis_inter(df = x, mdl = y), ...)