逐行读取时大型CSV文件的索引元素

Posted

技术标签:

【中文标题】逐行读取时大型CSV文件的索引元素【英文标题】:Index elements of large CSV file when reading line by line 【发布时间】:2014-08-19 06:33:14 【问题描述】:

我正在 R 中逐行读取一个大型 CSV 文件 (>15 GB)。我正在使用

con  <- file("datafile.csv", open = "r")
while (length(oneLine <- readLines(con, n = 1, warn = FALSE)) > 0) 
    # code to be written

在“要编写的代码”部分,我需要能够引用每一行中的单个元素并将它们保存到一个数组中。如果这很重要,该文件没有标题。

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 read.table 和参数 text 来解析 oneLine 字符串,就像它是一个 csv 文件一样:

# set your arguments: separator, decimal separator etc...
x <- read.table(text=oneLine, sep=",", dec=".", header=F) 

返回的x 是一个data.frame,只有一行,您可以轻松地将其转换为数组。

【讨论】:

【参考方案2】:

你可以这样做:

CHUNK_SIZE <- 5000
con <- file('datafile.csv', 'rt')
res <- NULL
while (nrow(chunk <- read.csv(con, nrow = CHUNK_SIZE, header = FALSE, stringsAsFactors = FALSE)) > 0) 
  res <- rbind(res, chunk)
  if (nrow(chunk) < CHUNK_SIZE) break

【讨论】:

以上是关于逐行读取时大型CSV文件的索引元素的主要内容,如果未能解决你的问题,请参考以下文章

逐行读取 CSV 文件 python

如何在 React 中逐行读取磁盘中的大 csv 文件?

在 R 中读取大型 csv 文件

Jmeter - 如何通过多个线程逐行读取 CSV 数据

如何从 Perl 快速访问许多大型 CSV 文件中的数据?

macmatlab导入大型csv