逐行读取时大型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文件的索引元素的主要内容,如果未能解决你的问题,请参考以下文章