5

そのため、この特定の .mat ファイルを R に読み込もうとしました。matlab についてはあまり知りませんが、R.matlab パッケージが圧縮されていないデータのみを R に読み込み、それを圧縮されていないものとして保存できることは十分に知っています。を使用してmatlabにそのまま保存する必要があります save new.mat -v6

そうしましたがreadMat("new.mat")、R で使用すると、ロードが永遠にスタックしてしまいました。また、次の方法でパッケージ hdf5 を使用してみました。

> hdf5load("new.mat", load=FALSE)->g
Error in hdf5load("new.mat", load = FALSE) : 
  can't handle hdf type 201331051

この問題が何であるかはわかりませんが、誰かがこれを理解しようとする場合、ファイルはhttp://dibernardo.tigem.it/MANTRA/MANTRA_online/Matlab_Code%26Data.html にあり、inventory と呼ばれます。 mat (最初のファイル)。

ご協力いただきありがとうございます!

4

2 に答える 2

5

この特定のファイルには 1 つinventoryのオブジェクト (オブジェクト) があり、そのstruct中にさまざまなものが含まれています。一部は cell 配列であり、他は double または logical のベクトルであり、いくつかは double の行列です。R.matlab は構造体内のセル配列を好まないように見えますが、R がこれをロードする際の問題の原因はわかりません。このような理由から、私は通常、Matlab の構造体を R のオブジェクトにマッピングすることを避けることをお勧めします。これはリストに似ており、これはリストに変換できますが、常に良い考えとは限りません。

オブジェクトごとに 1 つの新しいファイルを作成することをお勧めします。たとえばids = inventory.instance_ids、各オブジェクトを個別の .mat ファイルに保存するか、インベントリ オブジェクトを除くすべてのファイルを 1 つのファイルに保存します。さらに良いのは、 などを介してテキストに移動し、csvwrite何が作成されているかを確認できるようにすることです。

私はそれがMatlab to Rリーダーの使用をめぐって起こっていることを認識していますが、独自のフォーマット用にさまざまなリーダーを大量に取得するよりも、共通のユニバーサルフォーマットで物事を保持する方が再現性にはるかに役立ちます。

R.matlabまたは、この関数セット+ R/DCOM インターフェイス (Windows の場合)を介してメモリ内のオブジェクトを渡すこともできます。

これは R.matlab の使用方法には対応していませんが、私は R と Matlab の間で双方向に多くのデータ転送を行ってきました。ファイル)。私はオブジェクトをメモリに渡すのが好きなので、オブジェクトを両側で、または標準のテキスト ファイルを介して検査できます。アプリケーション固有のファイル形式、特に変化が激しく非効率的なファイル形式 (MathWorks のことです) を処理するのは、時間の無駄です。リーダーに取り組んでいる人々に感謝しますが、ターゲット言語で使用されるデータ構造をより詳細に制御できることは、単純な出力ファイル形式を使用することによるスペースのオーバーヘッドよりもはるかに価値があります。インメモリ データ転送は、プログラムとインターフェイスできるため非常に優れていますが、データを移動することが唯一の目的である場合は、気を散らす可能性があります。

于 2011-10-31T16:22:23.587 に答える
2

http://cran.r-project.org/web/packages/R.matlab/R.matlab.pdfの22 ~ 24 ページの例を実行しましたか? これにより、バージョン 4 および 5 から読み取る能力がテストされます。R が圧縮ファイルを読み取れないかどうかはわかりません。Omegahat には Rcompresssion パッケージがあります。

于 2011-10-31T16:31:44.073 に答える