Что вы видите здесь:
ÿþ
является меткой порядка байтов (BOM) для UTF-16-LE или UCS-2LE. См. Wikipedia ( Порядок следования байтов ) для объяснения. В вашем файле могут быть символы из странных языков, для которых требуется эта кодировка, или ваш файл мог быть создан каким-то программным обеспечением Windows, которое сохраняет файлы со спецификацией. Спецификация помещается перед всеми другими данными в начале файла.
R видит эти символы и считает, что данные начинаются здесь. Попробуйте:
(1) Если вам не нужна эта кодировка, просто откройте ваши данные в текстовом редакторе (например, Vim), измените кодировку, сохраните и считайте в R. (В Vim сделайте :write ++enc=utf-8 new_file_name.txt
, затем закройте файл и откройте вновь сохраненную версию, затем выполните :set nobomb
, просто чтобы убедиться, затем :wq
.)
(2) Если вам нужна кодировка или вы не хотите проходить через текстовый редактор, сообщите R, в какой кодировке находится файл. Вы можете поэкспериментировать с:
read.table("file.dat", fileEncoding = "UTF-16")
read.table("file.dat", fileEncoding = "UTF-16LE")
read.table("file.dat", fileEncoding = "UTF-16-LE")
read.table("file.dat", fileEncoding = "UCS-2LE")
Если ничего из этого не работает, попробуйте решение, приведенное в этом связанном вопросе: Как определить правильную кодировку для read.csv? и проверить руководство по R на Импорт / экспорт данных R , в нем есть раздел, который объясняет файлы с спецификацией.