Прочитать текстовый файл UTF-8 с помощью спецификации
У меня есть текстовый файл с отметкой порядка байтов (U + FEFF) в начале. Я пытаюсь прочитать файл в R. Возможно ли избежать отметки порядка байтов?
Функция fread
(из пакета data.table
) читает файл, но добавляет 
в начале первого имени переменной:
> names(frame_pers)[1]
[1] "reg_date"
То же самое с функцией read.csv
.
В настоящее время я создал функцию, которая удаляет спецификацию с первого имени столбца, но я считаю, что должен быть способ автоматического разбиения спецификации.
remove.BOM <- function(x) setnames(x, 1, substring(names(x)[1], 4))
> names(frame_pers)[1]
[1] "reg_date"
> remove.BOM(frame_pers)
> names(frame_pers)[1]
[1] "reg_date"
Я использую собственную кодировку для сеанса R:
> options("encoding" = "")
> options("encoding")
$encoding
[1] ""
Ответы
Ответ 1
Вы пробовали read.csv(..., fileEncoding = "UTF-8-BOM")
?. ?file
говорит:
Как и в случае с R 3.0.0, кодировка "UTF-8-BOM" принимается и будет удаляться знак байтового заказа, если он присутствует (что часто бывает для файлов и веб-страниц созданный приложениями Microsoft).
Ответ 2
Это было выполнено между версиями 1.9.6 и 1.9.8 с this commit; обновите свою установку data.table
, чтобы исправить это.
Как только вы закончите, вы можете просто использовать fread
:
fread("file_name.csv")