R - furrr 找不到自己的包



我目前正在处理一个软件包,假设它称为mypack。我有一个称为myFunc1的函数,另一个函数称为myFunc2,看起来像这样:

myFunc2 <- function(x, parallel = FALSE) { 
if(parallel) future::plan(future::multiprocess)
values <- furrr::future_map(x, myFunc1)
values
}

现在,如果我在不平行的情况下调用myFunc2,则可以使用。但是,如果我以并行= true来称呼它,我会收到以下错误:

Error: Unexpected result (of class ‘snow-try-error’ != ‘FutureResult’)
retrieved for MultisessionFuture future (label = ‘<none>’, expression = 
‘{; do.call(function(...) {; ...future.f.env <- environment(...future.f); 
if (!is.null(...future.f.env$`~`)) {; if 
(is_bad_rlang_tilde(...future.f.env$`~`)) {; ...future.f.env$`~` <- 
base::`~`; ...; }); }, args = future.call.arguments); }’): there is no 
package called 'myPack'. This suggests that the communication with 
MultisessionFuture worker (‘SOCKnode’ #1) is out of sync.

有人知道为什么MyFunc2在顺序模式下工作,但不同行,我如何阻止此错误出现?

可重复的示例:

linear_model_1 <- lm(mpg ~ cyl + disp + hp, data = mtcars)
linear_model_2 <- lm(mpg ~ cyl + poly(disp, 2), data = mtcars)
x <- list(linear_model_1, linear_model_2)

myFunc1 <- function(model, seed, size) {
  `%>%` <- purrr::`%>%`
  set.seed(seed)
  draws <- rep(size, 10) %>% 
    furrr::future_map(sample, x = fitted(model), replace = TRUE)
  mean(unlist(draws))
}

(注意:这不是整个功能,但基本上是缩短版本中的作用)

我在这里也有相同的情况。您必须至少使用DevTools安装软件包:install()一次。在本期中记录了这一点:https://github.com/davisvaughan/furrr/issues/95

相关内容

  • 没有找到相关文章

最新更新