Предупреждение "Неполная финальная строка" при попытке прочитать 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, затем сохраните файл.