【问题标题】:Index elements of large CSV file when reading line by line逐行读取时大型CSV文件的索引元素
【发布时间】: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
}

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

谢谢!

【问题讨论】:

    标签: r csv indexing line-by-line


    【解决方案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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多