Я пытаюсь использовать кластер высокой производительности в моем учебном заведении в первый раз, и я столкнулся с проблемой, которую я не могу решить.
Следующий код возвращает ошибку:
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""
А также попробовал другой код 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 не найдена. Очевидно, что все пакеты установлены и загружены. После прочтения некоторых сообщений в форуме кажется, что это связано с тем, что функции выполняются/работают.
Кто-нибудь может помочь? Я не программист!
Спасибо!
Update:
Я скорректировал свой код для предоставленного решения:
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. Как вы можете видеть, я создаю объект матрицы, называемый результатами для заполнения результатами (который работает с циклами), но после прочтения документации для foreach кажется, что вы сохраняете свои результаты по-разному с помощью этой функции.
И советы о том, что я должен выбрать для аргумента .combine?