我需要一种相对有效的方法来在Matlab和R之间共享数据。
我已经检查了SaveR和MATLAB R-link,但是 SaveR formats Matlab的二进制数据首先作为文本字符串,然后将它们打印到ASCII文件,这是对大型数据集效率不高, MATLAB R-link 仅适用于Windows(它使用基于COM的界面)。
Dirk发布了一个列表,列出了比 SaveR 和 Matlab R-link 更好的解决方案。我最近也了解了RAM disks(参见here和here的一些实现示例),并认为它们可能有助于在Matlab和R(或类似的计算环境)之间共享大型数据集的任务) 进一步。这引出了以下问题:
假设数据适合Matlab或R的本机数据容器中的机器内存:
是否列出了任何解决方案 更适合RAM磁盘?
还有其他的吗? 需要考虑的因素 处理RAM磁盘时的帐户 而不是与secundary-storage 溶液
谢谢!
答案 0 :(得分:17)
一些想法,以及我对R方面了解更多的警告:
CRAN上的R.matlab包可以提供帮助:此包提供了读取和写入MAT文件的方法。它还可以与本地或远程主机上运行的Matlab v6或更高版本进行通信(评估代码,发送和检索对象等)
使用数据库,尤其是轻量级和基于文件的数据库,如SQLite或H4,两者都有R支持
使用通用的序列化/反序列化格式; R通过RProtoBuf支持Google协议缓冲区,Google为Matlab指向protobuf-matlab
自己写!特别是当你只需要像大矩形矩阵这样基本的东西时,没有什么能比直接二进制写入更好;几年前我为Octave做了这个(接近Matlab)。您可以通过mex文件扩展Matab; R有它的API和帮助,如Rcpp。数据集越大,保存转换时看起来越有吸引力。
答案 1 :(得分:1)
Matlab在最新版本中本地使用HDF5(“保存”和“加载”)。对于R有一个package。那么HDF5可能是一个很好的解决方案。