Предупреждение "Неполная финальная строка" при попытке прочитать CSV файл в R

Я пытаюсь прочитать CSV файл в R и используя эту формулу:

pheasant<-read.table(file.choose(),header=TRUE,sep=",")

Я получаю это предупреждение:

"incomplete final line found by readTableHeader on 'C:\Documents and Settings..."

Есть несколько вещей, которые, как я думал, вызвали это предупреждение, но, к сожалению, я не знаю достаточно о R, чтобы самому диагностировать проблему, поэтому я думал, что отправлю сюда в надежде, что кто-то другой сможет ее диагностировать для меня!

  • . CSV файл изначально был файлом Excel, который я сохранил в формате .csv
  • файл содержит три столбца данных
  • каждый столбец данных имеет разную длину, т.е. в каждом столбце
  • Я хочу сравнить средства (используя t-тест или эквивалент в зависимости от нормального/не нормального распределения) двух столбцов за раз, например, t-тест между значениями столбца 1 и значениями столбца 2, затем t-критерий значений столбца 1 и столбца 3 и т.д.

Любая помощь или предложения будут серьезно оценены!

Ответ 1

Сообщение указывает, что последняя строка файла не заканчивается символом конца строки (EOL) (перевод строки (\n) или возврат каретки + перевод строки (\r\n)). Первоначальное намерение этого сообщения состояло в том, чтобы предупредить вас о том, что файл может быть неполным; большинство файлов данных имеют символ EOL как самый последний символ в файле.

Средство очень просто:

  • Откройте файл
  • Перейдите к самой последней строке файла
  • Поместите курсор в конец этой строки
  • Нажмите return
  • Сохранить файл

Ответ 2

Вы действительно уверены, что выбрали файл .csv, а не файл .xls? Я могу воспроизвести ошибку только в том случае, если попытаюсь прочитать файл .xls. Если я попытаюсь прочитать в .csv файле или любом другом текстовом файле, невозможно воссоздать полученную ошибку.

> Data <- read.table("test.csv",header=T,sep=",")
> Data <- read.table("test.xlsx",header=T,sep=",")
Warning message:
In read.table("test.xlsx", header = T, sep = ",") :
  incomplete final line found by readTableHeader on 'test.xlsx'

readTableHead - c-функция, которая дает ошибку. Он пытается прочитать в первых n строках (стандартные первые 5), чтобы определить тип данных. Остальные данные считываются при использовании scan(). Таким образом, проблема заключается в формате файла.

Один из способов выяснить, установить рабочий каталог в каталог, где находится файл. Таким образом вы видите расширение файла, в котором вы читаете. Я знаю, что в Windows он не показан стандартным, так что вы можете поверить в него csv, пока это не так.

Следующее, что вам нужно сделать, - открыть файл в Блокноте или Wordpad (или другом редакторе) и проверить, что формат эквивалентен моему файлу test.csv:

Test1,Test2,Test3
1,1,1
2,2,2
3,3,3
4,4,
5,5,
,6,

Этот файл предоставит вам следующий фреймворк данных:

> read.table(testfile,header=T,sep=",")
  Test1 Test2 Test3
1     1     1     1
2     2     2     2
3     3     3     3
4     4     4    NA
5     5     5    NA
6    NA     6    NA

Формат csv, сохраненный excel, разделяет все ячейки с запятой. Пустые ячейки просто не имеют значения. read.table() может легко справиться с этим и распознает пустые ячейки просто отлично.

Ответ 3

Проблема легко разрешима; потому что последняя строка ДОЛЖНА быть пустой.

Скажите, если ваш контент

line 1,
line2

измените его на

line 1,
line2
(empty line here)

Сегодня я встретил эту проблему, когда я пытался использовать R для чтения JSON файла, используя команду "json_data < -fromJSON (paste (readLines (" json01.json "), collapse =" "))"; и я разрешаю это по моему методу выше.

Ответ 4

Я получил то же сообщение. Мое исправление включено: я удалил все дополнительные листы (вкладки) в CSV файле, исключил нечисловые символы, сохранил файл в виде запятой и загрузился в R v 2.15.0 с использованием стандартного языка:

имя_файла < -read.csv( "имя файла", заголовок = TRUE),

В качестве дополнительной защиты я закрыл программное обеспечение и снова открылся, прежде чем загрузил csv.

Ответ 5

В разных европейских локалях, поскольку запятый символ служит десятичной точкой, вместо этого следует использовать функцию read.csv2.

Ответ 6

Я решил эту проблему с изменением кодировки в аргументе read.table от fileEncoding = "UTF-16" до fileEncoding = "UTF-8".

Ответ 7

У меня возникла эта проблема, когда у меня была одна цитата как часть заголовка. Когда я удалил его (т.е. Переименовал соответствующий заголовок столбца с Jimmy data в Jimmys data), функция не выдала никаких предупреждений.

Ответ 8

Я понял, что было предоставлено несколько ответов, но никаких реальных исправлений пока нет.

Причиной, как упоминалось выше, является "Конец строки", отсутствующий в конце файла CSV.

В то время как реальное исправление должно исходить от Microsoft, прогулка - это открыть файл CSV с помощью текстового редактора и добавить строку в конце файла (иначе нажмите клавишу возврата). Я использую программное обеспечение ATOM в качестве редактора текста/кода, но практически все основные текстовые редакторы будут делать.

В то же время сообщите об ошибке Microsoft.

Вопрос: Мне кажется, что это проблема офиса 2016 года. У кого-нибудь есть проблема на ПК?

Ответ 9

Проблема, которую вы описываете, произошла для меня, когда я переименовал .xlsx как .csv.

Что исправлено для меня, это "Сохранить как", а затем снова сохранить его как .csv.

Ответ 10

Откройте файл в текстовом ретрансляторе или блокноте ++ и покажите форматирование, например. в текстовом wrangler вы показываете невидимые. Таким образом, вы можете увидеть новые символы строк или вкладок Часто excel будет добавлять всевозможные вкладки в неправильные места, а не последний новый символ строки, но вам нужно показать символы, чтобы увидеть это.

Ответ 11

Моя работа заключалась в том, что я открыл файл csv в текстовом редакторе, удалил лишние запятые на последнем значении, а затем сохранил файл. Например, для следующего файла

Test1,Test2,Test3
1,1,1
2,2,2
3,3,3
4,4,
5,5,
,6,,

Удалите запятые после 6, затем сохраните файл.