在 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。该包提供了方法readMat
和writeMat
。这两种方法都读/写 Matlab 理解的二进制格式(也可以通过 R.matlab 被 R 理解)。
键入安装包
install.packages("R.matlab")
随后,不要忘记加载包,例如由
library(R.matlab)
readMat
和 writeMat
的文档可通过 ?readMat
和 ?writeMat
访问,包含简单的使用示例。
【讨论】:
是的,它运行良好。事实上,我一直在寻找 Lucas 发布的代码。我之前尝试过使用 sep=" " 或 "\t",但它们都不适合我。但是,按照您的建议进行操作,我不需要将数据保存在 .csv 文件中,因此不会浪费我的时间来转换文件。我非常感谢您的帖子! 无论如何,在这种情况下使用二进制格式应该更快。如果你不介意,你会考虑accepting the answer吗? ;-)以上是关于在 R 中保存大数据文件,然后在 Matlab 中加载的主要内容,如果未能解决你的问题,请参考以下文章