В read.table(): неполная конечная строка, найденная readTableHeader
У меня есть CSV, когда я пытаюсь выполнить read.csv()
этот файл, я получаю предупреждающее сообщение:
In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on ...
И я не могу изолировать проблему, несмотря на очистку StackOverflow и R-help для решений.
Это ссылка на Dropbox для данных: https://www.dropbox.com/s/h0fp0hmnjaca9ff/PING%20CONCOURS%20DONNES.csv
Ответы
Ответ 1
Как объясняется Hendrik Pon, сообщение указывает, что последняя строка файла не заканчивается символом конца строки (EOL) (linefeed (\n) или возврат каретки + перевод строки (\ r\n)).
Средство очень просто:
- Откройте файл
- Перейдите к самой последней строке файла
- Поместите курсор в конец этой строки
- Нажмите return/enter
- Сохранить файл
так вот ваш файл без предупреждения
df=read.table("C:\\Users\\Administrator\\Desktop\\tp.csv",header=F,sep=";")
df
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 Date 20/12/2013 09:04 20/12/2013 09:08 20/12/2013 09:12 20/12/2013 09:16 20/12/2013 09:20 20/12/2013 09:24 20/12/2013 09:28 20/12/2013 09:32 20/12/2013 09:36
2 1 1,3631 1,3632 1,3634 1,3633 1,363 1,3632 1,3632 1,3632 1,3629
3 2 0,83407 0,83408 0,83415 0,83416 0,83404 0,83386 0,83407 0,83438 0,83472
4 3 142,35 142,38 142,41 142,4 142,41 142,42 142,39 142,42 142,4
5 4 1,2263 1,22635 1,22628 1,22618 1,22614 1,22609 1,22624 1,22643 1,2265
Но я думаю, что вы не должны читать таким образом, потому что вам нужно снова изменить форму данных, спасибо.
Ответ 2
У меня возникла та же проблема при создании матрицы данных в блокноте.
Поэтому я подошел к последней строке матрицы данных и нажал кнопку ввода. Теперь у меня есть "n" линейная матрица данных и новая пустая строка с курсором в начале строки "n + 1".
Задача решена.
Ответ 3
У меня была такая же проблема с файлами .xls.
Мое решение состоит в том, чтобы сохранить файл в виде txt с разделителями. Затем вы также можете вручную изменить расширение .txt на .xls, затем вы можете открыть dataframe с помощью read.delim
.
Это очень грубый способ преодолеть эту проблему.
Ответ 4
Это не файл CSV, каждая строка представляет собой столбец, вы можете его вручную разобрать, например:
file <- '~/Downloads/PING CONCOURS DONNES.csv'
lines <- readLines(file)
columns <- strsplit(lines, ';')
headers <- sapply(columns, '[[', 1)
data <- lapply(columns, '[', -1)
df <- do.call(cbind, data)
colnames(df) <- headers
print(head(df))
Обратите внимание, что вы можете игнорировать предупреждение из-за отсутствия последнего конца строки.
Ответ 5
У меня та же проблема: Предупреждение: В read.table(file = file, header = header, sep = sep, quote = quote,: неполная последняя строка, найденная readTableHeader на hola.csv
Для упрощения я создал базовую таблицу в Excel и сохранил ее во всех предлагаемых ею форматах .csv (значения, разделенные запятыми, csv UTF8, MS2 csv и т.д.), И ошибка сохраняется во всех них. Я работаю в Mac 10.15 Catalina, Excel версии 16.29.1 (2019).
Я изменил язык своего ноутбука с Испании на Великобританию, выбрав "," для групп и "". для десятичных чисел, как некоторые люди здесь предложили, это может быть связано с тем, что в некоторых странах языки по умолчанию используют точку с запятой вместо запятых для csv. После этого, как и ожидалось, CSV действительно создаются через запятую, но я все равно получаю предупреждение.
Как и предполагалось, если я открою файл в textedit и нажму в конце кнопку enter, а затем сохраню его, R работает отлично, и ошибка исчезает, но не представляется практичным/эффективным делать это каждый раз, когда я хочу открыть csv. С другой стороны, для меня остается загадкой, почему работающие коллеги, использующие конфигурацию Mac UK, не получают эту ошибку (как и я, когда открываю csv, который они создали на своих ноутбуках). Это может быть версия Excel? Должен ли я игнорировать предупреждение? (стол выглядит хорошо при его открытии). Спасибо!
Ответ 6
Или вы можете просто открыть этот файл Excel и сохранить его как файл .csv и вуаля, что предупреждение исчезло.