r - furrr 没有找到自己的包

标签 r parallel-processing package r-future furrr

我目前正在开发一个包,假设它被称为 myPack。
我有一个名为 myFunc1 的函数和另一个名为 myFunc2 的函数,它看起来像这样:

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

现在,如果我在不并行的情况下调用 myFunc2,它会起作用。但是,如果我使用 parallel = 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

关于r - furrr 没有找到自己的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54968901/

相关文章:

r - 将表列转换为空间对象

r - 如何将列值与定界符以及定界符的异常(exception)结合起来?

java - 南 : Aynchronous parallel computing

parallel-processing - 大型数组中位数的并行计算

perl - 如何检查perl模块是否可用?

r - 为什么 xlim 会切断连续尺度的边界值?

R中真正快速的单词ngram矢量化

grails - 使用动态查找器的并行查询的Grails设计模式

python - 如何从包内导入包?

Python 包 "click"在新包中使用时会导致 "Error: Got unexpected extra arguments (sdist bdist_wheel)"