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

时间:2014-08-19 06:33:14

标签: r csv indexing line-by-line

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用带有参数read.table的{​​{1}}来解析text字符串,就像它是csv文件一样:

oneLine

返回的# set your arguments: separator, decimal separator etc... x <- read.table(text=oneLine, sep=",", dec=".", header=F) 是一个x,只有一行,您可以轻松转换为数组。

答案 1 :(得分:1)

你可以这样做:

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
}