Rで.matファイルを読み書きする(R)

パッケージ「R.matlab」を使うと.matファイルの読み書きができる。

install.packages("R.matlab")
library(R.matlab)

#読み込み
data <- readMat(pathname)
print(data)

#書き出し
A <- matrix(1:27, ncol=3)
B <- as.matrix(1:10)
C <- array(1:18, dim=c(2,3,3))
filename <- paste(tempfile(), ".mat", sep="")
writeMat(filename, A=A, B=B, C=C)
マニュアル

書き込む引数にdata.frameやlistを指定すると、.matファイルをMatlabに読み込んだとき、要素名それぞれをフィールド名に持つ構造体として扱うことができる。
D <- c('a', 'b', 'c')
dat <- list(A=A, B=B, C=C, D=D)
writeMat(filename, dat=dat)

% on Matlab %
>> dat

dat = 

    A: [9x3 int32]
    B: [10x1 int32]
    C: [18x1 int32]
    D: {3x1 cell}
この例だとRでの変数名Cは3次元のarrayだが、Matlabで読み込むと1列のベクトルにまとめられてしまう。
そのままの構造を保ったまま扱うには、工夫が必要なようだ。

2022.06.18 追記

↑ PAGE TOP