R中如何检测NetCDF文件中是否已存在指定变量
解决方法
你可以通过ncdf4打开文件后返回的nc对象的var列表的名称来判断变量是否存在,判断条件为"RH" %in% names(ncid_old$var),存在返回TRUE,不存在返回FALSE,把这个条件加入if判断逻辑即可。
完整实现代码如下:
library(ncdf4) # 打开目标NetCDF文件,开启写入权限 ncid_old <- nc_open("original.nc", write=TRUE ) # 检测RH变量是否已存在,不存在则先添加 if (!"RH" %in% names(ncid_old$var)) { var <- ncvar_def( 'RH', '%', list(xdim2,ydim2,tdim2), mv2 ) ncid_old <- ncvar_add( ncid_old, var) } # 无论是否新增变量,都直接写入RH数据 ncvar_put( ncid_old, "RH", RHdata, start=c(1,1,1), count=c(nx,ny,12)) # 写入完成后必须关闭文件,避免数据丢失 nc_close(ncid_old)
说明:
ncvar_put直接传入变量名字符串"RH"即可,ncdf4会自动匹配文件内的对应变量,不需要区分是刚新增的还是之前就存在的,需要保证你定义的RH变量维度、缺失值参数和已有文件中RH变量的属性一致,否则写入时会报错。
内容的提问来源于stack exchange,提问作者matlabcat
相关产品推荐
相关产品推荐

