0
我遇到以下問題。我需要的變量timeindex在我的全球環境,但是當我想從我的全球環境的並行處理時將其導出爲我的集羣中,我得到了以下信息:如何在foreach循環中運行clusterExport(操作系統:Windows)
錯誤{:任務1失敗 - 「對象 'SZENARIO' 未找到」
我的原代碼,這會產生錯誤小例子:
Historical <- structure(c(18.5501872568473, 24.3295787432955, 14.9342384460288,
13.0653757599636, 8.67294618896797, 13.4587662721594, 20.792126254714,
17.5162747884424, 28.8253151239752, 23.0568765432192), index = structure(c(-7305,
-7304, -7303, -7302, -7301, -7300, -7299, -7298, -7297, -7296
), class = "Date"), class = "zoo")
Szenario <- structure(c(10.2800684124652, 14.5495871489361, 9.8565852930294,
21.1654540678686, 21.1936990312861, 12.4209005842752, 9.77473132000267,
17.1997402736739, 17.884107611858, 13.622588360244), index = structure(c(13149,
13150, 13151, 13152, 13153, 13154, 13155, 13156, 13157, 13158
), class = "Date"), class = "zoo")
library(doParallel)
library(foreach)
library(raster)
library(zoo)
library(parallel)
# Parallelisation Settings
# Definition of how many cores you want to use
UseCores <- detectCores() -2 # -1 at max because one core has to be used for other tasks
# Register CoreCluster
cl <- makeCluster(UseCores)
registerDoParallel(cl)
foreach(fn=1:1) %dopar% {
library(raster) # needed libraries have to be loaded inside the loop, while parallel processing occurs
library(zoo)
library(base)
library(parallel)
#In my original script, I'm looping through Filenames, which are called like my variables in my Global environment (without .tif at the end of the filename), variables names are saved as characters
file.referenz.name <- c("Historical")
file.szenario.name <- c("Szenario")
#Create timeindex für rasterstacks to subset later on with them (getZ, setZ)
clusterExport(cl, varlist = c(file.szenario.name, file.referenz.name), envir = .GlobalEnv)
time.index.szenario <- index(get(file.szenario.name))
time.index.referenz <- index(get(file.referenz.name))
}
#end cluster
stopCluster(cl)
謝謝。我可以從我的全球環境中導出所有變量嗎? .export = environment()' – Nucore
好吧,它的'.export = ls(.GlobalEnv)' – Nucore
要小心導出* everything *,因爲導出不需要導出的很多和/或大的對象將會添加大量的開銷。相反,嘗試仔細確定所需的全局變量集合,例如通過試驗和錯誤。或者,您可以使用doFuture後端,參見https://stackoverflow.com/a/45898676/1072091 – HenrikB