在 R 中保存大数据文件,然后在 Matlab 中加载

Posted

技术标签:

【中文标题】在 R 中保存大数据文件,然后在 Matlab 中加载【英文标题】:Save big data file in R to be loaded afterwards in Matlab 【发布时间】:2014-01-21 17:30:16 【问题描述】:

我在 R 中创建了一个 300000 x 7 的数字矩阵,我想在 R 和 Matlab 中使用它。但是,我无法为 Matlab 创建一个可读性好的文件。 当使用命令 save() 时,file=xx.csv,它会识别 5 列;扩展名为 .txt 的所有数据都在单个列中打开。 我也尝试使用包 ff 和 ffdf 来管理这个大数据(我猜 R 在保存时识别行和列的问题与此有关),但我不知道如何将它保存为 Matlab 的可读格式之后。

这个数据集的一个例子是:

output <- matrix(runif(2100000, 1, 1000), ncol=7, nrow=300000)

【问题讨论】:

你试过 write.table(matrix, file = "csv_name.csv", sep=",") 吗?我已经将它用于同样大的文件。没有可重现的例子就很难知道问题所在。 save 以 R 的本机二进制格式保存 R 对象,所以我很惊讶你在 Matlab 中得到了任何东西。更改扩展名将无济于事。阅读help(save) 获取信息。 我的回答解决了你的问题吗?如果是这样,如果您接受它,我将不胜感激,否则如果您对原始问题有更多需要,我将很乐意提供帮助。 【参考方案1】:

如果你想同时使用 R 和 Matlab,并且你有一个和你一样大的矩阵,我建议使用 R.matlab package。该包提供了方法readMatwriteMat。这两种方法都读/写 Matlab 理解的二进制格式(也可以通过 R.matlab 被 R 理解)。

键入安装包

install.packages("R.matlab")

随后,不要忘记加载包,例如由

library(R.matlab)

readMatwriteMat 的文档可通过 ?readMat?writeMat 访问,包含简单的使用示例。

【讨论】:

是的,它运行良好。事实上,我一直在寻找 Lucas 发布的代码。我之前尝试过使用 sep=" " 或 "\t",但它们都不适合我。但是,按照您的建议进行操作,我不需要将数据保存在 .csv 文件中,因此不会浪费我的时间来转换文件。我非常感谢您的帖子! 无论如何,在这种情况下使用二进制格式应该更快。如果你不介意,你会考虑accepting the answer吗? ;-)

以上是关于在 R 中保存大数据文件,然后在 Matlab 中加载的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB 中保存非常大的图像

MATLAB如何选择合适的拟合函数?

如何在matlab中读取TXT数据文件

MATLAB:保存文件时显示进度条?

百度matlab有啥函数可以自己命名后保存wav音频文件?注意!!!

在 Matlab 中保存一个大单元矩阵(字符串变量)非常慢且大小很大