Применить кодировку ко всем данным.Таблица
у меня есть следующий файл прочитать в данных.таблица такая:
raw <- fread("avito_train.tsv", nrows=1000)
затем, если я изменю кодировку определенного столбца и строки, как это:
Encoding(raw$title[2]) <- "UTF-8"
Он отлично работает.
но как я могу применить кодировку ко всем столбцам и всем строкам?
Я проверил fread
документация, но, похоже, нет никакой опции кодирования. Кроме того, я пытался Encoding(raw)
но это дает мне ошибку (аргумент вектора символов ожидаемый.)
Edit: эта статья содержит дополнительные сведения об иностранном тексте в RStudio в Windows http://quantifyingmemory.blogspot.com/2013/01/r-and-foreign-characters.html
3 ответов
Я попытался это:
Encoding(raw$title) <- "UTF-8"
, который устанавливает кодировку для всего столбца. Пока все будет в порядке. Все еще открыт для других вариантов, поэтому он будет делать это автоматически при импорте.
Это было недавно реализовано в версии данных devel.стол, В1.9.5. Это скоро будет подтолкнуто к CRAN (как v1.9.6). Не могли бы вы дать версии devel попробовать, чтобы увидеть, если это решает это для вас?
fread()
приобрел encoding
аргумент, особенно для проблем с windows.
require(data.table) # v1.9.5+
fread("file.txt", encoding="UTF-8")
должен решить проблему. У меня нет файла для проверки. Если это не решит вашу проблему, пожалуйста, напишите вопрос на странице проекта с воспроизводимым файл примера.
к сожалению, кажется, что нет способа сделать это при импорте (пока) с fread.
хотя вы, похоже, уже поняли это, я опубликую способ установки кодировки всего dt после импорта.
один из способов сделать это-зациклить это на всех столбцах символов в таблице данных:
for (name in colnames(raw[,sapply(raw, is.character), with=F])){
Encoding(raw[[name]]) <- "UTF-8"}
в colnames... бит сначала получает столбцы, которые являются символами (С=F быть необходимым для dt кажется), и затем один получает имена столбцов, которые он будет цикл над. Короче говоря: это дает пользователям то, что вы уже нашли, работает, но во всех столбцах char.
сейчас ... поскольку нет гарантии, что имена colnames для ваших целых чисел, поплавков и т. д. не потребуют некоторого массажа, следующее должно решить его:
for (name in colnames(raw)){
Encoding(colnames(raw)) <- "UTF-8"
}