【发布时间】:2020-11-29 10:57:44
【问题描述】:
使用 RStudio,我正在尝试从 Brain Allen 研究所读取 Gene_expression_matrix.csv 文件,但该文件太大,即使对于具有大量 RAM 的计算机也是如此(我可以访问并在笔记本电脑上尝试过)有 64 GB RAM 和 384 GB RAM 的计算机。有没有人访问过这个文件或任何类似大小的文件?谢谢!
我正在使用此代码:
Gene_expression_matrix <- read.csv("Gene_expression_matrix.csv")
我收到的错误信息是:
Error: cannot allocate vector of size 3.9 Mb
【问题讨论】:
-
您收到的错误信息是什么?另请查看
disk.frame包,该包用于磁盘数据分析。它确实限制了某些操作,例如回归。所以你也应该阅读他们webpage 上的包文档。 -
尝试使用
data.table::fread(..., nrows=...)读取子集,看看object.size()如何随行数缩放。此外,搜索“高性能任务视图 CRAN”以获取用于处理大型和内存不足数据的工具。文件是否压缩在磁盘上?在读入 R 时它应该扩大到其大小的 5 倍,这并不令人震惊...... -
这是关于检查high-performance task view(尤其是“大内存和内存不足数据”部分)的建议发挥作用的地方。或者上面@Oliver推荐的
disk.frame包。 -
@Val,添加到@BenBolker,您体验到许多操作会创建数据副本。您的数据似乎几乎无法放入内存,因此这将导致 R 崩溃。当数据太大而无法放入内存时,生活会变得复杂,这就是为什么存在像
disk.frame这样的包(以及@BenBolker 建议的其他包)。那时,通常有必要留在大数据包环境中。例如。您将希望保留disk.frame或您选择的任何替代方案,并使用专门为这些对象实现的方法。 -
视情况而定。我认为
disk.frame确实在某处说它允许使用一般功能。远程调试是一项具有中等挑战性的任务。您是否关注 diskframe.com/articles/ingesting-data.html 并使用csv_to_disk.frame()? (对不起,csv_to_disk.frame(path, in_chunk_size = 1e6))?