2017-10-18 3 views
0
{ 
dimensions: 
    grp = 50 ; 
    time = UNLIMITED ; // (0 currently) 
    depth = 3 ; 
    scalar = 1 ; 
    spectral_bands = 2 ; 
    x1AndTime = 13041 ; 
    x2AndTime = 13041 ; 
    midTotoAndTime = 13041 ; 
variables: 
    double time(time) ; 
    double a1(time, hru) ; 
    double a2(time, hru) ; 
    double a3(x1AndTime, hru) ; 
    double a4(x2AndTime, hru) ; 
    double a5(hru) ; 

Ouvrez le fichier netCDF dans RComment puis-je obtenir une liste de variables netCDF avec des dimensions particulières?

out <- ncdf4::nc_open('test.nc')

Obtenez toutes les variables

ncvars <- names(out[['var']])

Cela me donne une liste de toutes les les variables dans le fichier netCDF.

Comment puis-je obtenir une liste des variables qui ont les dimensions time et hru, par exemple?

sortie prévue:

Liste avec a1, a2

+0

Je ne connais pas R, mais je pourrais montrer une solution python si cela pouvait aider. –

+0

@EricBridger S'il vous plaît faire, – maximusdooku

Répondre

0

Note: Ceci est python, pas R, mais illustre la logique.

import netCDF4 

out = netCDF4.Dataset("test.nc") 
# list of vars w dimenions 'time' and 'hru' 
wanted_vars = [] 

# loop thru all the variables 
for v in out.variables: 
    # this is the name of the variable. 
    print v 
    # variable.dimensions is a tuple of the dimension names for the variable 
    # In R you might need just ('time', 'hru') 
    if out.variables[v].dimensions == (u'time', u'hru'): 
    wanted_vars.append(v) 

print wanted_vars 
+0

Uhm, la question est sur 'R'? – Bart

+0

J'ai demandé @maximusdooku si python aiderait. –

+0

Ah, désolé .. manqué cela. – Bart