尝试调整多会话计划时,R furrr计划返回错误吗?

问题描述

我正在尝试设置所需的计划,但出现以下错误

no_cores <- availableCores() - 2
plan(multisession,workers = no_cores,lazy = T,gc = T)

错误是:

Error in MultisessionFuture(expr = expr,envir = envir,substitute = FALSE,: 
  argument "expr" is missing,with no default

或:

plan(multisession,gc = T)
Error in tweak.future(function (expr,envir = parent.frame(),substitute = TRUE,: 
  Future argument 'lazy' must not be tweaked / set via plan()

请告知如何设置workers / lazy计划的gcmultisessionmulticore和其他参数。

我的R版本是:

R.Version()
$platform
[1] "x86_64-pc-linux-gnu"

$arch
[1] "x86_64"

$os
[1] "linux-gnu"

$system
[1] "x86_64,linux-gnu"

$status
[1] ""

$major
[1] "4"

$minor
[1] "0.2"

$year
[1] "2020"

$month
[1] "06"

$day
[1] "22"

$`svn rev`
[1] "78730"

$language
[1] "R"

$version.string
[1] "R version 4.0.2 (2020-06-22)"

$nickname
[1] "Taking Off Again"

解决方法

尝试您的示例,我得到第二条错误消息。而且我基本上遵循了给出的建议:您在lazy = T中设置了参数plan,这是不允许的。但是,您可以直接在furrr函数调用中设置此参数:

library(furrr)
no_cores <- availableCores() - 2
plan(multisession,workers = no_cores,gc = T)

future_map(c("hello","world"),~.x,.options = future_options(lazy = TRUE))
[[1]]
[1] "hello"

[[2]]
[1] "world"