【问题标题】:NetCDF: HDF error only inside a loop in RNetCDF:仅在 R 中的循环内出现 HDF 错误
【发布时间】:2021-08-25 09:13:39
【问题描述】:

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

Error in R_nc4_open: NetCDF: HDF error

当我运行循环进行检查时,一切都很好并且文件打开了。它只是无法在循环中打开。代码没有问题。

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

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

代码sn-p:

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()}`

【问题讨论】:

标签: r netcdf netcdf4


【解决方案1】:

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

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

也许 ncdf4 包没有与此过滤保持最新。

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 2020-01-23
    • 2019-09-24
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多