NetCDF:HDF 错误仅在 R 中的循环内

问题描述

我有一个脚本来循环选择 net cdf 文件。打开文件提取数据,然后再次关闭。我以前用过很多次,它没有问题。我最近收到了一组新的文件来运行相同的代码。我可以使用 ncdf4 包和 nc_open() 函数单独检查文件文件看起来不错,没有损坏。但是,当我运行循环时,该函数不会让我打开文件并出现此错误

Error in R_nc4_open: NetCDF: HDF error

当我运行循环进行检查时,一切正常并且文件打开。它只是不能在循环中打开。代码没有问题。

以前有没有人遇到过这种情况,未损坏的网络 cdf 文件仅偶尔会出现此错误。即使在循环之外,我也可以运行代码并第一次得到错误,然后在不更改任何内容的情况下再次运行它并且连接正常工作。

不知道如何解决这个问题,所以只是想看看为什么会发生这种情况的建议。

代码片段:

targetYear <- '2005-2019'
variables <- c('CHL','SSH')
ncNam <- list.files(folderdir,'.nc',recursive = TRUE)

for(v in 1:length((variables)))
{
varNam <- unlist(unique(variables))[v]

# Get names corresponding to variable
varLs <- ncNam[grep(varNam,basename(ncNam))]
varLs <- varLs[grep(targetYear,varLs)]}
varLs <- varLs[1]
export <- paste0(exportdir,varNam,'/')
dir.create(export,recursive = TRUE)

if(varNam == 'Proximity1km' | varNam == 'Proximity200m'| varNam == 
'ProximityCoast'| varNam == 'Bathymetry'){

fileNam <- varLs
ncfilename <- paste0(folderdir,fileNam)
print(ncfilename)
  
# Read ncfile
ncfile <- nc_open(ncfilename)  
  
nc_close(ncfile) 
gc()
  
} else {

fileNam <- varLs
ncfilename <- paste0(folderdir,fileNam)
print(ncfilename)
  
# Read ncfile

ncfile <- nc_open(ncfilename)

nc_close(ncfile) 
gc()}`

解决方法

我发现了这个问题。这与 .nc 文件中的错误检测文件管理器有关。

我删除了过滤器,文件在循环内工作正常。还是有点奇怪。

也许 ncdf4 包不是最新的过滤。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...