首页 > 解决方案 > 为什么并行集群无法加载我的 R 包?

问题描述

例如,我需要在并行处理中包含引导包。但是,clusterEvalQ 不起作用;如,工人身上没有包裹。下面是代码和输出。我认为这与图书馆位置有关,但工作人员看到的图书馆位置相同。

我搜索了类似的问题,但它们都通过 clusterEvalQ 或设置正确的库位置解决了......这似乎都不是我的问题。谢谢你的帮助!这以前有效,但现在无效。我试过删除/重新安装软件包。

.libPaths()
> [1] "C:/Users/USERNAME/Documents/R/win-library/3.5"
> [2] "C:/Program Files/R/R-3.5.0/library" 

require(boot) # loads

###

cluster <- parallel::makeCluster(2)

parallel::clusterEvalQ(cl   = cluster,
                       expr = {.libPaths()})
> [[1]]
> [1] "C:/Users/USERNAME/Documents/R/win-library/3.5"
> [2] "C:/Program Files/R/R-3.5.0/library"                   
>
> [[2]]
> [1] "C:/Users/USERNAME/Documents/R/win-library/3.5"
> [2] "C:/Program Files/R/R-3.5.0/library" 

###

parallel::clusterEvalQ(cl   = cluster,
                       expr = {require(boot)})
> [[1]]
> [1] FALSE
>
> [[2]]
> [1] FALSE

###

parallel::stopCluster(cl = cluster)

编辑经过一番搜索,似乎工人被扔到了不同的地方……某事。运行Sys.info()结果

           sysname            release            version 
         "Windows"         ">= 8 x64"       "build 9200" 
          nodename            machine              login 
         "NODE"                 "x86-64"        "USERNAME" 
              user     effective_user 
           "USERNAME"    "USERNAME"

而在工人是

           sysname            release            version 
         "Windows"         "10 x64"       "build 14393" 
          nodename            machine              login 
           "NODE"            "x86-64"           "USERNAME" 
              user     effective_user 
           "USERNAME"     "USERNAME"

“NODE”和“USERNAME”在两者上都是相同的。那么......工人是否被扔到不同的 Windows 版本?我电脑上的系统信息显示工人列出的版本。

我尝试使用 Rgui 而不是 Rstudio,并Sys.info()返回与工作人员相同的信息。但是,它显示已安装引导。然而,使用 Rgui 创建Sys.info()的工人(与工人相同)也找不到引导包。

我对此不知所措。该代码在另一台计算机上运行良好。

标签: rparallel-processing

解决方案


推荐阅读