【问题标题】:Reading a csv file that is 53,000 MB large读取 53,000 MB 的 csv 文件
【发布时间】:2015-11-11 14:03:30
【问题描述】:

数据被称为:data.csv

我尝试了 read.csv('data.csv') 并弹出一条错误消息,说文件太大。

我不确定在这种情况下如何使用 fread,因为当我尝试时:

require(data.table)
DT <- fread("data.csv")

那没用。

有什么想法吗?

我最终尝试安装“bigmemory”包,但它说

Warning in install.packages :
  package ‘bigmemory’ is not available (for R version 3.2.0)

【问题讨论】:

  • 文件为空意味着您没有输入正确的路径。使用list.files 确保文件位于您声明的目录中。
  • 关于 ffbigmemory 软件包的有用教程:bytemining.com/wp-content/uploads/2010/08/r_hpc_II.pdf 应该让你开始跑步。
  • @CarlWitthoft 它说我需要最新的 R 版本 3.2.0: install.packages 中的警告:包 'bigmemory' 不可用(对于 R 版本 3.2.0)你知道如何更新它吗到那个?
  • 尼克,如果你不知道如何更新R,你是如何安装它的?听起来您应该阅读可在 CRAN 下载的手册。
  • 我实际上已经弄清楚了那部分。我有 3.2.0 版本,但它不会在其中打开。唯一高于那个 3.2.2 的,不过这个包已经出了一段时间了。我要寻找的主要内容是代码中的结构,以便我读取 csv 文件。 @CarlWitthoft

标签: r csv fread read.csv


【解决方案1】:

我建议你也试试下面的代码:

tab5rows <- read.table("datatable.txt", header = TRUE, nrows = 5)
classes <- sapply(tab5rows, class)
tabAll <- read.table("datatable.txt", header = TRUE, colClasses = classes)

详细讨论here可以显着提高读取大文件的速度。更重要的是,第一行将使您能够查看文件内部。如果你能打开它,那么机动的范围就很大。或者,值得以二进制形式读取文件:

messy_file <- readLines(file("ProblematicData.csv", "rb"), encoding="UTF-8", skipNul=TRUE)

编辑

此外,我建议您查看this discussion,其中详细讨论了读取大文件的一些选项。

我解决这个问题的方法是:

  1. 尝试使用read.table 的第一个选项,或者
  2. data.table 尝试fread,或者
  3. 读取为二进制

【讨论】:

  • 我的数据不是 txt 文件,而是 csv,所以它不会读取文件 datatable.txt @Konrad
  • 我认为你想要“peEk”而不是“peAk”:-)
  • @CarlWitthoft 你知道如何将上面的代码与 csv 文件一起使用吗?他使用txt文件,但我没有那个
  • Nick,一个“csv”文件一个文本文件,用逗号定义为数据分隔符。不要被那些该死的 windows 文件扩展名所迷惑。
  • @Nick,通过readLines 读取CSV 文件的问题在SO 上讨论过几次,example
猜你喜欢
  • 2019-02-01
  • 2018-08-08
  • 1970-01-01
  • 2016-06-10
  • 2012-05-23
  • 1970-01-01
  • 2019-08-17
  • 2016-09-08
相关资源
最近更新 更多