簡體   English   中英

執行多會話工作時,future_lapply 說 package 不存在,但在運行計划時工作正常(順序)

[英]When performing multisession work, future_lapply says that a package doesn't exist, but it works fine when running plan(sequential)

當我嘗試將future_applyplan(multisession)一起使用時,它說我嘗試使用的 package 不存在。 當我使用plan(sequential)時,它工作正常。 使用plan(callr)時我也遇到同樣的錯誤。

這是錯誤:

Error in loadNamespace(name): there is no package called 'fuzzyjoin'

誰能幫我找出解決方案或這里出了什么問題?

我不確定這是否與 future.apply package 或 future 或 globals 包有關,因為我知道它們也參與其中。

這是我的代碼顯示問題:

library(fuzzyjoin)
library(future.apply)
#> Loading required package: future
library(dplyr)
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(tidyr)


iris_mod<- iris %>%
  mutate(examplefield= Sepal.Width + Petal.Length,
         Species = as.character(Species))


iristype <- iris_mod$Species %>% unique()

plan(sequential)

test_sequential <- future_lapply(iristype, 
                               FUN = function(x) {
                                 fuzzyjoin::fuzzy_left_join(
                                   iris_mod %>% filter(Species %in% x),
                                    iris_mod, 
                                    by = c("Species"="Species",
                                           "examplefield"="Sepal.Length"),
                                    match_fun = list(`==`, `<`)
                                 )},
                               future.chunk.size= 2
)


plan(multisession)

test_multisession <- future_lapply(iristype, 
                                   FUN = function(x) {
                                     fuzzyjoin::fuzzy_left_join(
                                       iris_mod %>% filter(Species %in% x),
                                        iris_mod, 
                                        by = c("Species"="Species",
                                               "examplefield"="Sepal.Length"),
                                        match_fun = list(`==`, `<`)
                                     )},
                                   future.chunk.size=2
)
#> Error in loadNamespace(name): there is no package called 'fuzzyjoin'

代表 package (v2.0.1) 於 2022 年 1 月 28 日創建

如果相關的話,我正在運行 R v4.0.3。

我運行了以下代碼,發現由於某種原因沒有正確傳遞庫路徑。 我的骯臟修復只是為了確保將軟件包安裝在future正在尋找的 libPath 上。

install.packages("fuzzyjoin", lib= "C:/Program Files/R/R-4.0.3/library" )

這是我運行以發現我的正常 session 和 future_lapply/future session 使用不同的庫路徑的代碼:

.libPaths()
# [1] "\\\\networkfileservername/Userdata/myusername/Home/R/win-library/4.0" "C:/Program Files/R/R-4.0.3/library"    


f_libs%<-% .libPaths()
print(f_libs)
# [1] "C:/Program Files/R/R-4.0.3/library"     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM