#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)