环境/范围进一步:将get()嵌套在future_map()中

问题描述 投票:0回答:1

[我有兴趣了解更多有关furrr如何从全球环境中找到东西的知识,并普遍询问其执行的black magic。这是我不了解的行为的特定示例,可以使用一些帮助:在future_map调用或get调用中需要更改什么以返回"C""F"

# load furrr, describe "plan"
library(furrr)
nc<-2
plan(strategy = multiprocess, workers = nc)

# create objects

a<-list("A", "B", "C")
b<-list("D", "E", "F")


#works fine
future_map(1:5, function(foo){
    map(c("a", "b"), function(my_object_name){
        bar<-my_object_name
        print(bar)

    })
})


# object 'a' not found

future_map(1:5, function(foo){
        map(c("a", "b"), function(my_object_name){
            bar<-get(my_object_name)[[3]]
            print(bar)
    })
})

编辑

似乎此问题并非在所有系统上都可再现,可能与我安装furrr.有关。尽管该软件包提供了有关多核计划的警告,但这是multiprocessmultisession的问题,但不是[ C0]。

r scoping furrr
1个回答
0
投票

正是plan(strategy=multicore,...造成了问题。将envir指定为全局环境以查找该对象,然后指定envir

print
© www.soinside.com 2019 - 2024. All rights reserved.