相关疑难解决方法(0)

在 R 中运行并行计算时如何在工作线程上设置 .libPaths(检查点)

我使用检查点包进行可重复的数据分析。有些计算需要很长时间才能计算,所以我想并行运行它们。然而,当并行运行时,检查点未在工作线程上设置,因此我收到一条错误消息“没有名为 xy 的包”(因为它没有安装在我的默认库目录中)。

我如何确保每个工作人员都使用检查点文件夹中的包版本?我尝试在 foreach 代码中设置 .libPaths 但这似乎不起作用。我还希望在全局范围内设置检查点/libPaths 一次,而不是在每个 foreach 调用中设置一次。

另一种选择可能是更改 .Rprofile 文件,但我不想这样做。

checkpoint::checkpoint("2018-06-01")

library(foreach)
library(doFuture)
library(future)

doFuture::registerDoFuture()
future::plan("multisession")

l <- .libPaths()

# Code to run in parallel does not make much sense of course but I wanted to keep it simple.
res <- foreach::foreach(
  x = unique(iris$Species),
  lib.path = l
) %dopar% {
  .libPaths(lib.path)
  stringr::str_c(x, "_")
}
Run Code Online (Sandbox Code Playgroud)

{ 中的错误:任务 2 失败 - “没有名为‘stringr’的包”

parallel-processing foreach r checkpoint r-future

3
推荐指数
1
解决办法
1171
查看次数

标签 统计

checkpoint ×1

foreach ×1

parallel-processing ×1

r ×1

r-future ×1