如何在R studio中加载大(3.96 gb).tsv文件

时间:2019-03-23 05:55:26

标签: r

我想将一个3.96 GB的制表符分隔的值文件加载到R,并且我的系统中有8个RAM。我如何将此文件加载到R上进行一些操作。

我尝试library(data.table)加载数据 但我收到此错误消息(错误:无法分配大小为965.7 Mb的向量)

我也用此代码尝试过fread,但是它也不起作用:花了很多时间,最后显示了一个错误。

as.data.frame(fread(file name))

3 个答案:

答案 0 :(得分:4)

如果我是你,我可能会

1)再次尝试输入fread代码,不要输入错字(最初缺少右括号):

as.data.frame(fread(file name))

2)尝试通过指定要读取的行数来部分读取文件。这可以在read.csvfread中使用nrow参数来完成。通过读取少量的行,可以在执行其他任何操作之前检查并确认文件实际可读。有时文件格式错误,可能有一些特殊字符,错误的行尾字符,转义或其他一些需要首先解决的问题。

3)看一下具有bigmemory功能的read.big.matrix软件包。此外,ff软件包具有所需的功能。

或者,我可能还会尝试“跳出框框”:我是否需要文件中的所有数据?如果没有,我可以使用cutawk进行预处理,以删除不必要的列。我是否绝对需要将其作为一个文件读取并将所有数据同时存储在内存中?如果没有,我可以分割文件或使用readLines ..

ps。 this帖子很好地介绍了该主题。 pps。感谢@Yuriy Barvinchenko对fread

发表评论

答案 1 :(得分:1)

您正在读取数据(将其存储在内存中),然后将其存储为data.frame(将创建另一个副本)。而是使用

将其直接读取到data.frame中
fread(file name, data.table=FALSE)

此外,运行垃圾回收也不会受到损害。

gc()

答案 2 :(得分:1)

根据我的经验以及@Oka的答案:

  1. fread()具有nrows=参数,因此您可以读取前10行。
  2. 如果发现不需要所有行和/或所有列,那么可以在fread()[]之后设置条件和字段列表
  3. 在许多情况下,您都可以将data.table用作dataframe,因此可以尝试在没有as.data.frame()的情况下进行读取

通过这种方式,我可以处理5GB的csv文件。