我需要一种相对有效的方法来在Matlab和
R之间共享数据。
我已经检查过
SaveR和
MATLAB R-link ,但是
SaveR首先将 Matlab的二进制数据
格式化为文本字符串,然后将它们打印到ASCII文件,这对于大型数据集而言效率不高,而且
MATLAB R-link仅在Windows上有效(它使用基于COM的界面)。
更新:
Dirk发布了一份清单,列出了比
SaveR和
Matlab R-link更好的解决方案。我最近还了解了
RAM磁盘 (有关一些实现示例,请参见
此处和
此处 ),并认为它们可能有助于进一步在Matlab和R(或类似的计算环境)之间共享大型数据集。这使我想到以下问题:
假设数据适合在Matlab或R的本机数据容器中的机器内存中:
- 到目前为止列出的解决方案是否更适合RAM磁盘?
- 在处理RAM磁盘而不是二级存储解决方案时,是否还要考虑其他因素?
谢谢!
回答:
需要注意的是,我有一些关于R方面的知识:
- CRAN上的R.matlab软件包可以帮助您: 该软件包提供读取和写入MAT文件的方法。它还使与在本地或远程主机上运行的Matlab v6或更高版本进行通信(评估代码,发送和检索对象等)成为可能。
- 正如您所建议的, HDF5是可能的,但我听说CRAN软件包hdf5中的R支持有些基本
- NetCDF可能是替代方案; CRAN具有软件包RNetCDF , ncdf和ncdf4
- 使用数据库,尤其是轻量级和基于文件的数据库,例如SQLite或H4,它们都具有R支持
- 使用通用的序列化/反序列化格式; R通过RProtoBuf支持Google协议缓冲区,Google指向用于Matlab的protobuf-matlab
- 自己写!尤其是当您只需要基本的东西(例如大矩形矩阵)时,没有什么比直接的二进制写更好。几年前,我为Octave(与Matlab接近)进行了此操作。您可以通过mex文件扩展Matab。 R有它的API和诸如Rcpp的助手。数据集越大,保存转换时看起来就越有吸引力。
更多&回答...