Jos*_*hDG 5 matlab r mat-file matlab-load
所以我一直在尝试将这个特殊的.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
Run Code Online (Sandbox Code Playgroud)
我不确定这个问题是什么,但如果有人想要弄清楚这个问题,那么该文件位于http://dibernardo.tigem.it/MANTRA/MANTRA_online/Matlab_Code%26Data.html ,称为库存. mat(第一个文件).
谢谢你的帮助!
这个特定的文件有一个对象,inventory
,它是一个struct
对象,里面有很多不同的东西。有些是元胞数组,有些是双精度向量或逻辑向量,还有一些是双精度矩阵。看起来 R.matlab 不喜欢结构中的单元格数组,但我不确定是什么导致 R 加载这个问题。出于这样的原因,我通常建议避免将 Matlab 中的结构映射到 R 中的对象。它类似于列表,并且可以将其转换为列表,但这并不总是一个好主意。
我建议为每个对象创建一个新文件,例如ids = inventory.instance_ids
,将每个对象保存到单独的 .mat 文件中,或者将所有对象(库存对象除外)保存到 1 个文件中。更好的是转到文本,例如 via csvwrite
,以便您可以看到正在创建的内容。
我意识到这是在使用 Matlab 到 R 阅读器,但是使用通用的通用格式对于可重复性比为专有格式获取一堆不同的阅读器更有用。
或者,您可以通过R.matlab
, 或这组函数+ R/DCOM 接口(在 Windows 上)传递内存中的对象。
虽然这并没有解决如何使用 R.matlab,但我已经在 R 和 Matlab 之间双向传输了大量数据,我发现最好避免 .mat 文件(以及类似的 .rdat文件)。我喜欢在内存中传递对象,以便我可以在每一侧或通过标准文本文件检查它们。处理特定于应用程序的文件格式,尤其是那些变化很大且效率低下的文件格式(我在看你的 MathWorks),不是很好地利用时间。我感谢那些为阅读器工作的人,但是对目标语言中使用的数据结构有更多的控制权非常值得使用简单的输出文件格式的空间开销。内存数据传输非常好,因为您可以连接程序,但如果您的唯一目标是移动数据,这可能会让人分心。