Создание данных, отличных от ASCII, подходящих для CRAN
У меня есть некоторые данные, содержащие не-ASCII-символы, которые я хочу включить в файл rda
в R-пакет. Когда я запускаю R CMD check
на пакете, я получаю предупреждение:
Warning: found non-ASCII strings
который блокирует его в CRAN.
Есть аналогичный вопрос о удалении не-ASCII-символов из файлов данных, но я хочу сохранить не-ASCII-символы.
Вы можете получить данные CSV здесь. Я читаю его в R и сохраняю как rda
с помощью этого кода:
english_monarchs <- read.csv(
wherever_you_downloaded_the_file_to,
fileEncoding = "utf8",
na.strings = ""
)
save(english_monarchs, "english_monarchs.csv")
Это столбец name
набора данных, который содержит значения не-ascii.
head(levels(english_monarchs$name))
## [1] "Adda" "Æðelbehrt"
## [3] "Æðelberht I" "Æðelberht II and Eardwulf"
## [5] "Æðelberht II, Ælfric and Eadberht I" "Æðelberht III"
Основываясь на (не очень ясном) руководстве в разделе "Вопросы кодирования" в разделе "Написание R-расширений", я думаю, что я должен кодировать фактор как UTF-8, но очевидный метод не работает:
Encoding(levels(english_monarchs$name)) <- "utf8" #each encoding still "unknown"
Как сделать переносимые данные достаточными для приема на CRAN?
Ответы
Ответ 1
Вещь, которая работала для меня, заключалась в том, чтобы объявить кодировку как "latin1"
, а затем использовать iconv
для преобразования в UTF-8.
Encoding(levels(english_monarchs$name)) <- "latin1"
levels(english_monarchs$name) <- iconv(
levels(english_monarchs$name),
"latin1",
"UTF-8"
)