使用foreach循环进行并行处理的r-Error

使用foreach循环进行并行处理的r-Error,r,foreach,rparallel,R,Foreach,Rparallel,我试图在R中使用'doSNOW'进行并行处理。在foreach循环命令期间,它显示错误:找不到对象j。请在这方面帮助我。该代码在正常for循环中运行良好。但这需要一个永恒的过程来完成。请在这方面帮助我。我将永远感激你 library(‘ncdf4′) stryear = 2041 strmon = 1 strday = 1 library(‘foreach’) library(‘doSNOW’) cl <- makeCluster(6) registerDoSNOW(cl) filena

我试图在R中使用'doSNOW'进行并行处理。在foreach循环命令期间,它显示错误:找不到对象j。请在这方面帮助我。该代码在正常for循环中运行良好。但这需要一个永恒的过程来完成。请在这方面帮助我。我将永远感激你

library(‘ncdf4′)
stryear = 2041
strmon = 1
strday = 1
library(‘foreach’)
library(‘doSNOW’)
cl <- makeCluster(6)
registerDoSNOW(cl)

filename = 'tasmax_WAS-44i_MPI-ESM-LR_rcp45_r1_CSIRO-CCAM-1391M_day_2041_2070.nc'
nc <- nc_open(filename)
tasmax <- ncvar_get(nc)
lon <- ncvar_get(nc, 'lon')
lat <- ncvar_get(nc, 'lat')
tasmax.len <- length(tasmax[1,1,])
x<-lon
lon.sel 87 & x<94)
y <- lat
lat.sel 20 & y<26)
lon.val <- lon[lon.sel]
lat.val <- lat[lat.sel]
#lon.length <- lon.val
#lat.length <- lat.val

strdate <- as.Date(paste(stryear,'-',strmon,'-', strday,sep=""))
finalVar <- data.frame( strday, strmon,stryear,matrix(NA,nrow=1, ncol=168))
colnames(finalVar)[1] <- "day"
colnames(finalVar)[2] <- "month"
colnames(finalVar)[3] <- "year"

locationData <- data.frame(matrix(NA,nrow=168, ncol=3))
colnames(locationData)[1]<-'y'
colnames(locationData)[2]<-'x'
colnames(locationData)[3]<-'Value'
n=1
rowno = 1

foreach(i = 1:12)
{ foreach(j = 1:14)
{ finalVar[rowno,n+3] <- tasmax[lon.sel[j],lat.sel[i],rowno]
colnames(finalVar)[n+3] <- paste(round(lat.val[i],2), ' & ', round(lon.val[j],2), sep="")
locationData[n,1] <- round(lat.val[i],2)
locationData[n,2] <- round(lon.val[j],2)
locationData[n,3] <- n
n= n+1
}
}

Error: object 'j' not found
library('ncdf4'))
stryear=2041
strmon=1
标准日=1
库('foreach')
库('doSNOW')

cl的语法看起来不正确,我想应该更像是
foreach(j=1:2)%do%(j*2)
谢谢弗兰克先生的回复。是的,我理解我的错误。我面临的一个问题是,当我做%do%或%dopar%或%:%时,要做得更快。你能给我解释一下吗?我想你是在问为什么并行处理速度更快?它不是先执行任务A,然后执行任务B,而是同时执行这两个任务,将一个任务放在计算机的每个处理器上。(除非你的电脑有多个处理器,否则这不会有什么帮助。)我想这就是它的工作原理;我自己还没用过。本教程可能有帮助: