r - 在 R 中的 doParallel 并行循环中使用砖(光栅)
问题描述
我想在 R 中的并行循环内读取单独的 tif 文件。我加载了光栅包并且砖在循环外工作,但在循环内尝试使用砖失败:
library(foreach)
library(doParallel)
library(raster)
cores=detectCores()
cl <- makeCluster(cores[1])
registerDoParallel(cl)
tiffile="../ESACCI-LC-L4-LC10-Map-20m-P1Y-2016-v1.0.tif"
print("step1")
bdata=brick(tiffile)
print("step2")
result<-foreach(j=1:5,.combine=rbind) %dopar% {
bpar=brick(tiffile)
}
输出:
[1] "step1"
[1] "step2"
Error in { : task 1 failed - "could not find function "brick""
Calls: %dopar% -> <Anonymous>
解决方案
该foreach
命令启动未加载光栅包的单独环境,因此您需要在调用中提供完整的命名空间,brick
如下所示...
library(foreach)
library(doParallel)
library(raster)
cores=detectCores()
cl <- makeCluster(cores[1])
registerDoParallel(cl)
tiffile="../ESACCI-LC-L4-LC10-Map-20m-P1Y-2016-v1.0.tif"
print("step1")
bdata=brick(tiffile)
print("step2")
result<-foreach(j=1:5,.combine=rbind) %dopar% {
bpar=raster::brick(tiffile)
}
推荐阅读
- javascript - (jQuery) 在移动设备上调用函数,但 jQuery 动画不起作用
- node.js - Node JS Promise 拒绝异常
- javascript - 将 React 组件的 HTML 发送到服务器
- windows - 允许使用 TouchInjection windows 8+ api 进行屏幕外触摸?
- python - 如何在pymogo中访问一个属性的值
- kubernetes - 使用 curl 检索自定义“custom.metrics.k8s.io”值
- python - Python石榴包UnboundLocalError:分配前引用的局部变量'distributions'
- ajax - 防止 Ajax 保存数据两次
- perl - Perl grep 数组索引
- firebird - 在 FirebirdSQL 上搜索锁定的记录或表