Есть ли способ проверить, существует ли переменная в файле netcdf уже в R?

#r #netcdf #ncdf4

Вопрос:

Я создал файл NetCDF с рядом переменных в нем. Во время отладки и тестирования, записывая новые переменные в файлы, я создал переменную » RH «в некоторых файлах, но в большинстве из них все еще нет «RH». Теперь я хочу запустить свой скрипт, который будет циклически просматривать все мои файлы и помещать данные в переменную RH, где она существует, или просто добавить переменную, а затем данные, где ее еще нет.

 library(ncdf4)
#Open the original file with my variables in it
ncid_old <- nc_open("original.nc"), write=TRUE )
#Create the 'RH' variable and put it in the file
var <- ncvar_def( 'RH', '%', list(xdim2,ydim2,tdim2), mv2 )
ncid_old <- ncvar_add( ncid_old, var)
 

Если переменная уже существует (как это происходит в некоторых случаях) Я получаю эту ошибку:

 Error in R_nc4_def_var_float: NetCDF: String match to name in use
Name of variable that the error occurred on: "RH"
I.e., you are trying to add a variable with that name to the file, but it ALREADY has a variable with that name!
 

Как я могу сначала проверить, существует ли переменная «RH»? Тогда я могу просто включить оператор if в свой сценарий r, чтобы проверить, существует ли он, и если он уже существует, то я не включаю строку:

 ncid_old <- ncvar_add( ncid_old, var)
 

Вместо этого я просто перехожу прямо к добавлению данных в переменную:

 ncvar_put( ncid_old, var, RHdata, start=c(1,1,1), count=c(nx,ny,12))
 

Ответ №1:

 "RH" %in% names(ncid_old$var)