2013-04-12 29 views
39

私はhdf5形式のファイルを持っています。私はそれが行列であることを知っていますが、私はそれを勉強できるようにRにその行列を読みたいと思います。私はh5rパッケージがこれを手伝ってくれると思っていますが、私はチュートリアルを読む/理解するのが簡単ではありません。そのようなチュートリアルはオンラインで入手できますか?具体的には、どのようにhdf5オブジェクトをこのパッケージで読み、実際に行列を抽出するのですか?Rでhdf5ファイルを扱うには?

UPDATE

私はCRANの一部ではなくBioConductoRの一部であるパッケージrhdf5を見つけました。インタフェースは、ドキュメントを理解するのが比較的簡単であり、サンプルコードはかなり明確です。私は問題なくそれを使うことができました。私の問題は入力ファイルだったようです。私が読んでいたかったマトリックスは、python pickleとしてhdf5ファイルに実際に格納されていました。だから私はそれを開こうとするたびにRにアクセスし、segmentation faultを得ました。私はpythonの中からtsvファイルとしてマトリックスを保存する方法を解明しましたが、その問題は解決しました。

答えて

5

私はrgdalパッケージを使用してHDF5ファイルを読み取りました。おそらくrgdalのバイナリバージョンがhdf5をサポートしていないことに注意する必要があります。その場合、ソースからrgdalをビルドする前に、HDF5サポートのあるソースからgdalをビルドする必要があります。

また、hdf5からnetcdfにファイルを変換してください。 netcdfに入ったら、優れたncdfパッケージを使用してデータにアクセスできます。私が考えている変換は、cdo toolで行うことができます。

+0

これについては、どのようにテンプレートコードを表示できますか? – Sam

+1

あなたの質問は今、少し広いです。コード例を含む、より具体的な質問がある場合は、さらに質問してください。 –

4

netCDF-4へのインターフェイスでもあるnetCDF-4は、hdf5ファイルを読み取るために使用できます(netCDF-4はnetCDF-3と互換性がありますが、hdf5が記憶層として使用されます)。開発者の言葉で

のNetCDF-4は、各々の望ましい特性を取る、のNetCDF-3およびHDF5データモデルを合成彼らの別々の強さのうち

のnetCDF-4形式の実装を記憶層としてHDF5の拡張バージョンを使用してのNetCDF-3のデータモデルを拡張:Unidataは言います。実際に

ncdf4は、シンプルなインターフェースを提供し、古いhdf5ncdfパッケージを使用してから単一ncdf4のパッケージにコードを移行することはour code少ないバギーをしたし、簡単に書くために(私の試練と回避策のいくつかはmy previous answerに記載されています)。

33

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") 

そしてinspect the structure

str(mydata) 

(すなわち多次元配列may appear transposedに注意)。また、Rで名前付きリストを読むことができます。

+0

本当に良いパッケージです。最初にCRANの 'h5r'パッケージを使うことを考えていましたが、文書化されていないようです。 Bioconductorに依存していなければ、 'rhdf5'は間違いなく道です。 –

+4

h5ファイルを読み込む前に、関数h5ls( "path/to/file.h5")を使用すると便利です。 –

+1

これは良いスタートです。ここでは、rdhf5の使い方に関する詳細なチュートリアルです。http://www.r-bloggers.com/working-with-hdf-files-in-r-example-pathfinder-sst-data/ – mmann1123

14

h5、最近CRANに公開したパッケージを使用することもできます。 rhdf5と比較すると、それは次のような特徴があります:直接ファイル、グループ、データセットや属性などのHDF5オブジェクトと対話する

  1. S4オブジェクトモデルを。
  2. 簡単な構文、すべてのデータ型の80%+のコードカバレッジと
  3. 200+テストケース用 readdata <- dataset[1:3, 1:3] dataset[1:3, 1:3] <- matrix(1:9, nrow = 3)
  4. サポートNA値のようなコマンドをサポートするデータセットの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) 

も参照

+1

' h5'と 'Rhdf5'? – krlmlr

+1

複合表から表をロードする方法は? lat < - readDataSet(dataset ["table"]) eval(substr(expr)、envir、enclos)のエラー: 複合データ型の読み込みは、まだサポートされていません。 – BigChief

+1

'h5'パッケージはデータフレームをサポートしていますか? – discipulus

関連する問題