Необычный конец строки, приводящий к ошибке
Я пытаюсь загрузить большую базу данных о такси в Нью-Йорке, общедоступную на веб-сайте NYC TLC.
library(data.table)
feb14 <- fread('https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv', header = T)
Выполнение вышеуказанного кода успешно загружает данные (что занимает несколько минут), но затем не удается проанализировать из-за внутренней ошибки. Я пытался удалить header = T
также.
Есть ли обходной путь, чтобы справиться с "необычными окончаниями строк" в fread
?
Error in fread("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv", :
Internal error. No eol2 immediately before line 3 after sep detection.
In addition: Warning message:
In fread("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv", :
Detected eol as \n\r, a highly unusual line ending. According to Wikipedia the Acorn BBC used this. If it is intended that the first column on the next row is a character column where the first character of the field value is \r (why?) then the first column should start with a quote (i.e. 'protected'). Proceeding with attempt to read the file.
3 ответа
Иногда другие параметры, такие как read.csv/read.table, могут вести себя по-другому... так что вы всегда можете попробовать это. (Может быть, исходный код говорит, почему, не смотрел на это).
Другой вариант - использовать readLines() для чтения в таком файле. Насколько я знаю, здесь нет никакого анализа / форматирования. Так что, насколько я знаю, это самый простой способ прочитать файл
Наконец, быстрое решение: используйте опцию 'skip = ...' в fread или управляйте концом, говоря 'nrows = ...'.
Кажется, что проблемы могут быть вызваны наличием пустой строки между заголовком и данными в исходном файле.csv. Удаление строки из.csv с использованием notepad++, похоже, исправило это для меня.
Есть что-то подозрительное с fread
, data.table
это быстрее, больше ориентирован на производительность для чтения больших файлов, однако в этом случае поведение не является оптимальным. Вы можете поднять этот вопрос на GitHub
Я могу воспроизвести проблему на загруженном файле даже с nrows = 5
или даже с nrows = 1
но только если придерживаться оригинального файла. Если я скопирую и вставлю первые несколько строк, а затем попробую, проблема исчезнет. Проблема также уходит, если я читаю прямо из Интернета с небольшим nrows
, Это даже не encoding
проблема, следовательно, моя рекомендация поднять проблему.
Я пытался прочитать файл с помощью read.csv
а также 100,000
строки без проблем и менее 6 секунд.
feb14_2 <- read.csv("https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2014-02.csv", header = T, nrows = 100000)
header = T
является избыточным аргументом, поэтому не будет иметь никакого значения для fread
но необходим для read.csv
,