我怎样才能使这段代码 运行 并行? 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)
有两点需要注意。
plan(multisession)
允许并行使用 Windows。请参阅 ?plan
了解所有选项。
- 我没有安装所有的包,因为示例不可重现。根据
nb_thesis_inter
. 的默认参数顺序,可能需要将 future_Map
调用更改为 future_map(function (x, y) nb_thesis_inter(df = x, mdl = y), ...)
我正在尝试 运行 这个简单的 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)
有两点需要注意。
plan(multisession)
允许并行使用 Windows。请参阅?plan
了解所有选项。- 我没有安装所有的包,因为示例不可重现。根据
nb_thesis_inter
. 的默认参数顺序,可能需要将
future_Map
调用更改为 future_map(function (x, y) nb_thesis_inter(df = x, mdl = y), ...)