r - 将大型 .txt 文件 (7.7 GB) 读入 R 的打包建议

标签 r

我在尝试将一个大的 .txt 文件 (7.7 GB) 读入 R 时遇到问题。该文件包含 817426 列和超过 1000 行。所有变量都是数字。 到目前为止,我使用命令 fread 尝试了一些不同的包(data.table;vroom;bigreadr);房间; big_fread2.

使用 fread,我已经能够将前 145 行读入我的 R session ,但是一旦我尝试读取 146 行它就会崩溃。对于其他命令,系统会在一段时间后中止,错误消息为:

R session aborted. R encountered a fatal error. The session was terminated

这些是我到目前为止使用的代码:

system.time(dfUga <- fread("CpG_sexageres.txt", nrows=145, header = TRUE, sep = "\t", colClasses="numeric"))
system.time(dfUga <- vroom("CpG_sexageres.txt", col_names = TRUE))
system.time(dfUga <- big_fread2("CpG_sexageres.txt"))

非常感谢任何建议。 干杯

最佳答案

R主要完全在内存中运行。这意味着,如果读取 CSV 产生的数据帧的大小超过可用 RAM,则尝试读取它会使 R 崩溃。这里的一个选择是使用更适合托管如此大数据集的工具。数据库是一种选择。您可以将数据加载到数据库中,然后使用适当的包从 R 访问它。

如果您确定确实需要使用整个集合,那么大多数关系数据库都可以在这里工作。例如,MySQL 是一个选项,并且有一个可以与 MySQL 数据库接口(interface)的 RMySQL 包。

但是,您甚至可能不需要一次真正使用整个数据集。如果您计划对您的数据集进行一些统计计算,并且 CSV 文件中的行号数据均匀或随机分布,您可以只将该数据的一个子集读入 R.Here is a one way 以从输入文件中每隔 N 行采样一次。以您的 7.7GB 文件为例,如果您只读取每 10 行,您最终会得到一个 770MB 的数据帧(大约),这应该完全在您的 R 安装的内存限制内。

关于r - 将大型 .txt 文件 (7.7 GB) 读入 R 的打包建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60652829/

相关文章:

r - 按阈值过滤数据,包括第一个超过阈值的值

xml - 使用 XML/RCurl R 包解析 HTML 表,而不使用 readHTMLTable 函数

r - 将 renv 用于私有(private) GitLab 包

r - knitr 如何使用 xtable 在 latex 表中获取指数/脚注

r - 在R中使用在线算法循环

r - 找出 R H2O AutoML 模型最有贡献的变量/特征?

r - 根据日期显示特定字段之前的值

python - 在 R 传单 map 上叠加图像

r - R 输出中的 dist() 函数

r - 将时间以秒为单位转换为小时 :Minutes:Seconds