Предупреждение ‘EOF в строке, заключенной в кавычки’ при использовании read.delim

#r

#r

Вопрос:

Я новичок в R, и я пытаюсь прочитать сжатый файл .tsv в R для анализа, но у меня возникают проблемы с чтением всего файла. Сценарий, который я использовал, написан поставщиками данных, поэтому я предполагаю, что это должен быть правильный код, но я получаю сообщение, в котором говорится

 In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :EOF within quoted string
  

и я вижу только 6 017 494 из 7 430 874 строк данных.

Сценарий выглядит следующим образом:

 knitr::opts_chunk$set(echo = TRUE)
library(data.table)
#TODO: change directory as needed
setwd("directory")
  
 data<- read.delim(unz("patent.tsv.zip", "patent.tsv"), header=TRUE, sep ="t", comment.char="#",  stringsAsFactors = FALSE, quote=""", fill = TRUE)
  

Я просмотрел несколько вопросов о предупреждении EOF и некоторые предлагаемые настройки quote="" , и я попробовал это, но тогда чтение данных занимает целую вечность. Я предполагаю, что в моем случае это не работает, потому что кавычка уже установлена в """ ? Не уверен, что это значит.. Кто-нибудь может мне помочь?

Комментарии:

1. Не могли бы вы попробовать с readr библиотекой. Он часто более надежен и быстрее, чем базовый, read.delim предоставляемый в R. Здесь та же функция в readr библиотеке. Если у вас все еще есть ошибка, вы правы, весьма вероятно, что ошибка возникает из-за кавычек.

2. Я попробовал библиотеку ‘readr’, и это определенно быстрее, но она зависает примерно на 97% и показывает сообщение об ошибке использования памяти. Я думаю, что моя оперативная память недостаточно велика, чтобы вместить весь набор данных. Есть ли параметр в библиотеке readr, который позволяет мне читать только первые несколько тысяч строк данных? Я не смог найти его на странице описания.

3. Да, вы можете использовать аргумент n_max , чтобы ограничить количество строк, которые вы хотите прочитать. Это есть в документации здесь .