如何从R中的netCDF文件中提取变量名?

ela*_*rry 11 r variable-names netcdf

我在R中编写一个函数,从netCDF文件中提取一些空气质量建模数据.我安装了包"ncdf".

为了让其他用户或我自己选择从netCDF文件中提取哪些变量,我想提取文件中所有变量的名称,这样我就可以在一个简单的列表中而不仅仅是print.ncdf()文件中提供很多信息.这有什么办法吗?

我尝试了ncdf对象unlist()var字段,但它似乎也返回了内容...

我google搜索堆栈*溢出*但似乎没有找到答案,所以非常感谢你的帮助.

提前谢谢了.

pla*_*pus 18

如果你的ncdf对象被调用nc,那么很简单:

names(nc$var)
Run Code Online (Sandbox Code Playgroud)

举个例子,使用这里下载的数据集(因为你没有提供一个):

nc <- open.ncdf("20130128-ABOM-L4HRfnd-AUS-v01-fv01_0-RAMSSA_09km.nc")
names(nc$var)
[1] "analysed_sst"     "analysis_error"   "sea_ice_fraction" "mask"   
Run Code Online (Sandbox Code Playgroud)


knb*_*knb 6

现在是2016年.不推荐使用ncdf包.与SE用户plannapus的答案相同的代码现在是:

library(ncdf4)
netcdf.file <- "flux.nc"
nc = ncdf4::nc_open(netcdf.file)
variables = names(nc[['var']])
#print(nc)
Run Code Online (Sandbox Code Playgroud)

文档中的注释:

Package: ncdf
Title: Interface to Unidata netCDF Data Files
Maintainer: Brian Ripley <ripley@stats.ox.ac.uk>
Version: 1.6.9
Author: David Pierce <dpierce@ucsd.edu>
Description: This is deprecated and will be removed
   from CRAN in early 2016: use 'RNetCDF' or 'ncdf4' instead.

Newer package "ncdf4" is designed to work with the netcdf library 
version 4, and supports features such as compression and 
chunking.Unfortunately, for various reasons the ncdf4 package must have
a different API than the ncdf package.
Run Code Online (Sandbox Code Playgroud)

维护者主页上的注释:

Package ncdf4 -- use this for new code

The "ncdf4" package is designed to work with the netcdf library, version 4. 
It includes the ability to use compression and chunking, 
which seem to be some of the most anticipated benefits of the version 4 
library. Note that the API of ncdf4 has to be different 
from the API of ncdf, unfortunately. New code should use ncdf4, not ncdf. 
Run Code Online (Sandbox Code Playgroud)

http://cirrus.ucsd.edu/~pierce/ncdf/