hdf5
形式のファイルがあります。私はそれが行列であることを知っていますが、それを研究できるようにR
でその行列を読みたいです。これを支援することになっているh5r
パッケージがあることはわかりましたが、読みやすい/理解しやすいチュートリアルはありません。このようなチュートリアルはオンラインで入手できますか。具体的には、このパッケージでhdf5
オブジェクトをどのように読み取り、実際にマトリックスを抽出するのですか?
更新
CRANの一部ではなく、BioConductoRの一部であるパッケージrhdf5
を見つけました。インターフェイスはドキュメントを比較的理解しやすく、サンプルコードは非常に明確です。問題なく使用できました。私の問題は、入力ファイルのようです。読みたかったマトリックスは、実際にhdf5
ファイルにpython pickle
として保存されていました。そのため、R
を介して開いてアクセスしようとするたびに、segmentation fault
を取得しました。 python
内からtsv
ファイルとして行列を保存する方法を考え出しましたが、この問題は解決しました。
rhdf5
パッケージは非常にうまく機能しますが、CRANにはありません。 Bioconductor からインストールします
source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
そしてそれを使用するには:
library(rhdf5)
ファイル内のオブジェクトをリストして、読み取りたいデータグループを見つけます。
h5ls("path/to/file.h5")
HDF5データを読み取ります。
mydata <- h5read("path/to/file.h5", "/mygroup/mydata")
そして 構造を調べる :
str(mydata)
(多次元配列 転置されているように見える )。また、Rのリストに名前が付けられるグループを読み取ることができます。
また、h5を使用することもできます。これは、最近CRANで公開したパッケージです。 _rhdf5
_と比較すると、次の機能があります。
readdata <- dataset[1:3, 1:3] dataset[1:3, 1:3] <- matrix(1:9, nrow = 3)
などのコマンドをサポートするデータセットにRのようなサブセット演算子を実装マトリックスを保存するには、次を使用できます。
_library(h5)
testmat <- matrix(rnorm(120), ncol = 3)
# Create HDF5 File
file <- h5file("test.h5")
# Save matrix to file in group 'testgroup' and datasetname 'testmat'
file["testgroup", "testmat"] <- testmat
# Close file
h5close(file)
_
...マトリックス全体をRに読み込みます。
_file <- h5file("test.h5")
testmat_in <- file["testgroup", "testmat"][]
h5close(file)
_
上のh5も参照してください
rgdal
パッケージを使用してHDF5ファイルを読み取りました。おそらく、バイナリバージョンのrgdal
がhdf5
をサポートしないことに注意する必要があります。その場合、ソースからgdal
をビルドする前に、HDF5サポートを使用してソースからrgdal
をビルドする必要があります。
または、ファイルをhdf5
からnetcdf
に変換してみてください。 netcdfに入ったら、優れたncdf
パッケージを使用してデータにアクセスできます。 cdo
ツール で変換できると思います。
ncdf4
netCDF-4へのインターフェイスであるパッケージは、hdf5ファイルの読み取りにも使用できます(netCDF-4はnetCDF-3と互換性がありますが、ストレージレイヤーとしてhdf5を使用します)。
開発者の言葉で:
NetCDF-4は、netCDF-3とHDF5のデータモデルを組み合わせて、それぞれの望ましい特性を取り入れながら、それぞれの長所を活用しています
NetCDF-4形式は、HDF5の拡張バージョンをストレージレイヤーとして使用することにより、netCDF-3データモデルを実装および拡張します。
実際には、 ncdf4
はシンプルなインターフェースを提供し、古いhdf5
およびncdf
パッケージを単一のncdf4
パッケージにより コード バグが少なくなり、記述しやすくなりました(私の試用および回避策の一部は 以前の回答 に記載されています)。