我正在尝试使用parLapply读取大量shapefile,对其进行一些分析,然后输出一个.csv文件。我的代码经过几次迭代(大约是我使用的内核数的3倍),然后开始从目录中删除.csv文件,并用与其他shapefile相关的.csv替换它们(有时是相同的shapefile,仅处理了第二秒钟)时间)。
这是我脚本的这一部分:
parLapply(cl, test_basins, function(x) {
basin <- readOGR(x)
lapply(years, function(y){
Raster <- stack(y)
dayname <- substring(y, 18, 27)
basin <- spTransform(basin, "+proj=longlat +datum=WGS84 +no_defs
+ellps=WGS84 +towgs84=0,0,0")
croppedraster <- crop(Raster, basin)
prismraster <- mask(croppedraster, basin)
allpoints<- rasterToPoints(prismraster)
wide<-data.table(allpoints)
long <- gather(wide, PRISM, value, -c(1,2))
setnames(long,old=c("x","y","PRISM","value"),
new=c("lon","lat","Day","value"))
dt = data.table(long)
meanP<- dt[,list(mean_P=mean(value)),by=Day]
meanP$Day <- dayname
meanP <- meanP[order(meanP$Day)]})
# then save it in the data folder
write.csv(meanP, file=paste0("./my_dir/" ,
basin$id , ".csv"), row.names=FALSE)
})
stopCluster(cl); print("cluster stopped")
有什么主意我的错误吗?
`test_basins` is a list of shapefiles and `years` is a list of raster files.
我不确定如何为此提供可复制的数据/我实际上没有收到错误消息。请让我知道是否可以提供更多信息。