我在R中逐行读取一个大型CSV文件(> 15 GB)。我正在使用
con <- file("datafile.csv", open = "r")
while (length(oneLine <- readLines(con, n = 1, warn = FALSE)) > 0) {
# code to be written
}
在“要编写的代码”部分中,我需要能够引用每行中的各个元素并将它们保存到数组中。如果这很重要,该文件没有标题。
谢谢!
答案 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
}