Подмножество и сохранение netcdf в R - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь поместить 8 файлов netcdf (один из них здесь ) в цикл foor в соответствии с более коротким периодом времени, а затем сохранить их как новый файл netcdf.

Я видел, что другие люди уже спрашивали о том, как разместить файлы netcdf в соответствии с другим периодом времени ( здесь или здесь ), но как только я делаю это в моих файлах netcdf, цикл "for""продолжает работать без завершения (даже не первый файл netcdf), и я не могу понять, почему.

Вот код, который я использую:

library(raster)
library(netcdf4)
library(lubridate)

#setting wd=indir containing netcdf files

setwd(indir)

files=list.files(pattern="nc")

for (j in seq_along(files)){

#setting wd containing netcdf files in the loop
setwd(indir)

b<-brick(files[j])

nc<-nc_open(files[j])

#variable
varname<-names(nc[['var']][3])
varunits <- ncatt_get(nc,varname,"units")[[2]]

lon<-ncvar_get(nc,"lon")

lat<-ncvar_get(nc,"lat", verbose = F)

time<-ncvar_get(nc, "time")

tunits <- ncatt_get(nc, "time", "units")[[2]]

dlname <- ncatt_get(nc, varname,"long_name")[[2]]

nc_close(nc)

#assigning a crs
proj4string(b)<-"+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"

#setting time as.Date 
tm<-ymd(getZ(b))

#setting time to rasterBrick
b<-setZ(b, tm)

# subsetting
b2<-subset(b, which(tm < as.Date('2006-01-01')))      

#setting wd where I want to save the "new" netcdf files
setwd(outdir)

writeRaster(b2, filename = paste0(varname, "_1971_2006_Noce.nc"),
format="CDF", varname=varname, varunit=varunits, longname=dlname,
xname="lon", yname="lat", zname="time", zunit=tunits, overwrite=TRUE)
}

Любая помощь о том, как получитьработа цикла была бы очень цениться!

...