如何在R中处理hdf5文件?
我有一个如何在R中处理hdf5文件?,r,hdf5,R,Hdf5,我有一个hdf5格式的文件。我知道它应该是一个矩阵,但我想在R中阅读该矩阵,以便我可以研究它。我看到有一个h5r包应该可以帮助实现这一点,但我没有看到任何易于阅读/理解的教程。网上有这样的教程吗。具体来说,如何使用此包读取hdf5对象,以及如何实际提取矩阵 更新 我发现了一个包rhdf5,它不是CRAN的一部分,而是BioConductoR的一部分。界面相对更容易理解,文档和示例代码都非常清晰。我可以毫无问题地使用它。我的问题似乎是输入文件。我想要读取的矩阵实际上作为python pickle存
hdf5
格式的文件。我知道它应该是一个矩阵,但我想在R
中阅读该矩阵,以便我可以研究它。我看到有一个h5r
包应该可以帮助实现这一点,但我没有看到任何易于阅读/理解的教程。网上有这样的教程吗。具体来说,如何使用此包读取hdf5
对象,以及如何实际提取矩阵
更新
我发现了一个包
rhdf5
,它不是CRAN的一部分,而是BioConductoR的一部分。界面相对更容易理解,文档和示例代码都非常清晰。我可以毫无问题地使用它。我的问题似乎是输入文件。我想要读取的矩阵实际上作为python pickle
存储在hdf5
文件中。因此,每次我试图打开它并通过R
访问它时,我都会遇到分段错误。我确实想出了如何将python
中的矩阵保存为tsv
文件,现在问题解决了。我使用rgdal
包读取HDF5文件。您需要注意的是,rgdal
的二进制版本可能不支持hdf5
。在这种情况下,在从源代码构建rgdal
之前,您需要使用HDF5支持从源代码构建gdal
或者,尝试将文件从hdf5
转换为netcdf
。一旦进入netcdf,您就可以使用优秀的ncdf
包访问数据。我认为转换可以通过。我使用rgdal
包来读取HDF5文件。您需要注意的是,rgdal
的二进制版本可能不支持hdf5
。在这种情况下,在从源代码构建rgdal
之前,您需要使用HDF5支持从源代码构建gdal
或者,尝试将文件从hdf5
转换为netcdf
。一旦进入netcdf,您就可以使用优秀的ncdf
包访问数据。我认为转换可以通过。该软件包是netCDF-4的接口,也可以用于读取hdf5文件(netCDF-4与netCDF-3兼容,但它使用hdf5作为存储层)
用开发商的话说:
- 报告说:
NetCDF-4结合了NetCDF-3和HDF5数据模型,利用了各自的理想特性,同时利用了各自的优势
- 说:
netCDF-4格式通过使用HDF5的增强版本作为存储层来实现和扩展netCDF-3数据模型
实际上,ncdf4
提供了一个简单的接口,将代码从使用较旧的hdf5
和ncdf
包迁移到单个ncdf4
包可以减少错误,更容易编写(我的一些试验和解决方法在中有记录)。该包是netCDF-4的接口,也可用于读取hdf5文件(netCDF-4与netCDF-3兼容,但它使用hdf5作为存储层)
用开发商的话说:
- 报告说:
NetCDF-4结合了NetCDF-3和HDF5数据模型,利用了各自的理想特性,同时利用了各自的优势
- 说:
netCDF-4格式通过使用HDF5的增强版本作为存储层来实现和扩展netCDF-3数据模型
实际上,ncdf4
提供了一个简单的接口,将代码从使用较旧的hdf5
和ncdf
包迁移到单个ncdf4
包可以减少错误,更容易编写(我的一些试验和解决方法在中有文档记录)。rhdf5
包工作得非常好,虽然它不在克兰。从中安装它
使用它:
library(rhdf5)
列出文件中的对象以查找要读取的数据组:
h5ls("path/to/file.h5")
读取HDF5数据:
mydata <- h5read("path/to/file.h5", "/mygroup/mydata")
(注意多维数组)。您还可以阅读组,这些组将被命名为R中的列表。尽管不在CRAN中,但rhdf5
包工作得非常好。从中安装它
使用它:
library(rhdf5)
列出文件中的对象以查找要读取的数据组:
h5ls("path/to/file.h5")
读取HDF5数据:
mydata <- h5read("path/to/file.h5", "/mygroup/mydata")
(注意多维数组)。您还可以阅读组,这些组将被命名为R中的列表。您还可以使用h5,这是我最近在CRAN上发布的一个包。
与rhdf5
相比,它具有以下特点:
S4对象模型直接与HDF5对象交互,如文件、组、数据集和属性
更简单的语法,为支持以下命令的数据集实现了类似R的子集运算符
readdata您还可以使用h5,这是我最近在CRAN上发布的一个软件包。
与rhdf5
相比,它具有以下特点:
S4对象模型直接与HDF5对象交互,如文件、组、数据集和属性
更简单的语法,为支持以下命令的数据集实现了类似R的子集运算符
readdata你能给我看一些模板代码吗?你现在的问题有点宽泛。如果您有更具体的问题,包括代码示例,请随时提问。您可以向我展示一些关于如何进行此操作的模板代码吗?您现在的问题有点广泛。如果您有更具体的问题,包括代码示例,请随时提出更多问题。确实是一个非常好的软件包。我曾考虑先使用CRAN提供的h5r
软件包,但它似乎文档不足。如果您不介意依赖Bioconductor,那么rhdf5
无疑是一个不错的选择。使用该功能可能会有所帮助
file <- h5file("test.h5")
testmat_in <- file["testgroup", "testmat"][]
h5close(file)