Индексировать элементы большого файла CSV при чтении построчно

Я читаю большой файл CSV (>15 ГБ) построчно в R. Я использую

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

В разделе "код для написания" мне нужно иметь возможность ссылаться на отдельные элементы в каждой строке и сохранять их в массив. Файл не имеет заголовков, если это важно.

Спасибо!

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
}

Вы могли бы использовать read.table с аргументом text разобрать oneLine Строка, как если бы это был CSV-файл:

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

Возвращенный x это data.frame только с одной строкой, которую вы можете легко превратить в массив.

Другие вопросы по тегам