for 루프를 foreach 루프로 병렬로 사용하려고합니다. for 루프의 경우 빈 행렬을 작성한 다음 for 루프에 의해 생성 된 값으로 채 웁니다. 그러나이 방법은이 채워되지 않습니다,foreach 루프의 결과를 행렬에 저장하십시오.
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 루프에서 작동하지 않습니다.
z는 래스터 파일이며, i는 숫자 클래스의 벡터입니다. 각 클래스 i에 대해 래스터 z의 셀 수를 구한 다음 래스터 z의 총 셀 수로 나눈 값을 비율로 구합니다.
이것을 foreach 루프의 행렬/데이터 프레임으로 저장하는 방법에 대한 조언이 있으십니까?
미리 감사드립니다.
당신은 어떻게
foreach
작품을 이해하지 않은이 previous question
귀하의 조언에 감사드립니다. 나는 크레인 문서를 읽었으나 내가 한 일을 주어진 예와 관련시킬 수는 없다. 나는 코드를 디버깅하려고하는 순간에 하나의 코어에서 내 코드를 시도하고있다. – Karen