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

将大型.txt文件(7.7GB)读入R的软件包建议,r,R,我在尝试将一个大的.txt文件(7.7GB)读入R时遇到问题。该文件包含817426列和1000多行。所有变量都是数字。 到目前为止,我用命令fread尝试了一些不同的包(data.table;vroom;bigreadr);vroom;大弗雷德2 使用fread,我已经能够在R会话中读取前145行,但是一旦我尝试读取146行,它就会崩溃。对于其他命令,系统只是在一段时间后中止,错误消息为: R会话中止。R遇到一个致命错误。会议结束 以下是我目前使用的代码: system.time(dfUga

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

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

R会话中止。R遇到一个致命错误。会议结束

以下是我目前使用的代码:

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"))

system.time(dfUgaR主要在内存中运行。这意味着,如果读取CSV产生的数据帧大小超过可用RAM,尝试读取它将导致R崩溃。这里的一个选项是使用更适合承载如此大数据集的工具。数据库是一个选项。您可以将数据加载到数据库中,然后使用适当的包从R访问它

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


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

您有多少RAM?我很惊讶vroom不能工作。它应该延迟读取数据,这意味着不能一次将所有内容放入内存。我有16 GB RAMI,我想这可能是一个选项。您建议使用哪种数据库和R包来访问它?@ACZ我有upd我用更多的信息回答了我的问题,希望能对你有所帮助。