中的錯誤我想第一次在我的機構中使用高性能羣集,一個我無法解決的問題。在R doParallel'foreach'中找不到函數 - {:任務1失敗 - 「找不到函數」光柵「」
下面的代碼返回一個錯誤:
ptime<-system.time({
r <- foreach(z = 1:length(files),.combine=cbind) %dopar% {
raster <- raster(paste(folder,files[1],sep=""))
data<-getValues(raster)
clp <- na.omit(data)
for(i in 1:length(classes)){
results[i,z]<-length(clp[clp==classes[i]])/length(clp)
print(z)
}
}
})
Error in { : task 1 failed - "could not find function "raster""
A也嘗試了不同的foreach代碼執行另一項任務,我有:
r <- foreach (i=1:length(poly)) %dopar% {
clip<-gIntersection(paths,poly[i,])
lgth<-gLength(clip)
vid<[email protected][i,3]
path.lgth[i,] <- c(vid,lgth)
print(i)
}
這個時候gIntersection功能是找不到的。很顯然,這些軟件包都已安裝並加載。看過一些論壇帖子後,它似乎與功能執行/運行的環境有關。
有人可以幫忙嗎?我不是程序員!
謝謝!
更新:
我已經調整了我的代碼所提供的解決方案:
results<-matrix(nrow=length(classes),ncol=length(files))
dimnames(results)[[1]]<-classes
dimnames(results)[[2]]<-files
ptime<-system.time({
foreach(z = 1:length(files),.packages="raster") %dopar% {
raster <- raster(paste(folder,files[z],sep=""))
data<-getValues(raster)
clp <- na.omit(data)
for(i in 1:length(classes)){
results[i,z]<-length(clp[clp==classes[i]])/length(clp)
print(z)
}
}
})
但我得到的是充滿了NA的輸出(我的結果矩陣)。正如你所看到的,我創建了一個稱爲結果的矩陣對象來填充結果(它適用於for循環),但是在閱讀foreach的文檔之後,似乎用這個函數保存了不同的結果。
有關我應該爲.combine參數選擇什麼的建議?
嘗試使用'foreach'的'.packages'參數。這些軟件包沒有加載到工作人員身上。 – Roland
http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf第8頁和第9頁。或'?foreach'。這就是羅蘭評論中給出的信息可以找到的地方。 –
非常感謝您的幫助!這個問題已經解決,但現在我有一個新問題。我將編輯我的原始問題。 – Karen