Мой цикл работает правильно и внезапно терпит неудачу в одном файле

Я пытаюсь открыть и построить около 60 файлов netcdf4 из каталога. Я следовал аналогичному примеру, первоначально опубликованному здесь.

"~/Desktop/Summer 2020/Tropomi/Aerosol Height"

ncfiles <- list.files("~/Desktop/Summer 2020/Tropomi/Aerosol Height")

for (i in 1: length(ncfiles)){
fname <-(paste0("~/Desktop/Summer 2020/Tropomi/Aerosol Height/", ncfiles[i]))
 f <- nc_open(fname)
 print(fname)
}

Когда я запускаю этот раздел, правильные файлы считываются и выводятся на экран, но внезапно останавливаются с этим сообщением об ошибке:

[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T201241_20180715T215609_03908_01_010301_20190530T173144.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T215411_20180715T233739_03909_01_010301_20190530T174631.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T233541_20180716T011909_03910_01_010301_20190530T175745.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T011711_20180716T030038_03911_01_010301_20190530T181100.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T213507_20180716T231835_03923_01_010301_20190530T202107.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T231637_20180717T010005_03924_01_010301_20190530T203126.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T005807_20180717T024134_03925_01_010301_20190530T203847.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T211603_20180717T225931_03937_01_010301_20190530T231939.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T225733_20180718T004100_03938_01_010301_20190530T233047.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180718T003902_20180718T022230_03939_01_010301_20190530T234019.nc"
Error in R_nc4_open: NetCDF: HDF error
Error in nc_open(fname) : 
  Error in nc_open trying to open file ~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180718T205659_20180718T224026_03951_01_010301_20190531T015417.nc

Я открыл файл, выделенный сообщением об ошибке, вне цикла, поэтому я не верю, что файл поврежден. Кто-нибудь знает, почему это происходит? Заранее спасибо!

ОБНОВЛЕНИЕ: Используя try, я могу запустить цикл до конца и вывести все нужные файлы на консоль. Следующим шагом для меня является чтение файлов, извлечение переменных и наложение растровых изображений друг на друга, в результате чего получается одно изображение. Try и TryCatch не работают, и мой цикл прерывается, как только встречается первая ошибка.

for (i in 1: length(ncfiles)){
  try(
    {
      fname <-(ncfiles[i])
      f <- nc_open(fname)
      print(fname)},
    silent = T)
  ah <- ncvar_get(f, varid = "DETAILED_RESULTS/aerosol_optical_thickness")
  lon <- ncvar_get(nc, varid = "PRODUCT/longitude")
  lat <- ncvar_get(nc, varid = "PRODUCT/latitude")
  nc_close(f)
  s1 <- data.frame(as.vector(lon), as.vector(lat), as.vector(ah))
  crsLatLon <- "+proj=longlat +datum=WGS84"
  ex <- extent(c(-180,180,-90,90))
  pmraster <- raster(ncol=360*10, nrow=180*10, crs=crsLatLon,ext=ex)
  pmraster <- rasterize(s1[,1:2], pmraster, s1[,3], fun=mean, na.rm=T)
  exHI <- extent(c(-180,-140,10,30))
  levelplot(crop(pmraster,exHI))
}

Как я могу изменить структуру цикла, чтобы пропустить ошибки?


person Matt    schedule 29.06.2020    source источник
comment
Вам, вероятно, нужно добавить nc_close в свой цикл   -  person Robert Wilson    schedule 30.06.2020
comment
Хороший вопрос @RobertWilson, спасибо. Я считаю, что это необходимо, но даже когда я добавляю это в свой цикл, код выдает то же сообщение об ошибке.   -  person Matt    schedule 01.07.2020
comment
За исключением того, что файл поврежден, что, как вы сказали, не так, я не понимаю, как это может происходить.   -  person Robert Wilson    schedule 01.07.2020
comment
Всегда ли он останавливается на конкретном файле или только на n-м файле?   -  person alani    schedule 05.07.2020
comment
Это происходит в 6 конкретных файлах. Но это нормально, мне просто нужно пропустить их, так как они мешают моей конечной цели — созданию одного изображения из всех файлов.   -  person Matt    schedule 05.07.2020