如何从 R 中的 netCDF 文件中提取变量名?
Posted
技术标签:
【中文标题】如何从 R 中的 netCDF 文件中提取变量名?【英文标题】:How to extract variable names from a netCDF file in R? 【发布时间】:2013-01-13 05:37:46 【问题描述】:我正在用 R 编写一个函数来从 netCDF 文件中提取一些空气质量建模数据。我已经安装了包“ncdf”。
为了让其他用户或我自己可以选择从 netCDF 文件中提取哪些变量,我想提取文件中所有变量的名称,这样我就可以在一个简单的列表中呈现,而不仅仅是 @987654321 @文件提供太多信息。有什么办法吗?
我尝试 unlist()
到 ncdf 对象的 var
字段,但它似乎也返回了内容......
我用谷歌搜索了堆栈*溢出*,但似乎没有找到答案,因此非常感谢您的帮助。
非常感谢。
【问题讨论】:
【参考方案1】:如果你的 ncdf 对象被称为nc
,那么很简单:
names(nc$var)
举个例子,使用下载的数据集here,例如(因为你没有提供):
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"
【讨论】:
非常感谢,@plannapus - 我应该想到这一点!抱歉没有提供示例文件,因为我对 R 和 netCDF 还很陌生,我想我无法复制大约 35 GB 的工作文件来说明... ;-)【参考方案2】:现在是 2016 年。ncdf 包已弃用。 与 SE 用户 plannapus 的答案相同的代码现在是:
library(ncdf4)
netcdf.file <- "flux.nc"
nc = ncdf4::nc_open(netcdf.file)
variables = names(nc[['var']])
#print(nc)
来自文档的注释:
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.
来自维护者主页的注释:
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.
http://cirrus.ucsd.edu/~pierce/ncdf/
【讨论】:
我们如何知道“默认”变量ncvar_get
的名称会返回?它不是来自names(nc$var)
的列表中的第一个。以上是关于如何从 R 中的 netCDF 文件中提取变量名?的主要内容,如果未能解决你的问题,请参考以下文章
从 R 中的 netCDF 提取点的时间序列(lon,lat)
从paleoView导入R中的netcdf时只有正纬度和经度可能是错误的投影