#r #character-encoding
#r #кодировка символов
Вопрос:
Это больше о внутренностях R, о том, как он кодирует функции.
У меня есть функция, которая выглядит следующим образом:
remove_latin <- function (x) {
chartr("ÁÉÍÓÚÑáéíóúñ", "AEIOUNaeioun", x)}
Затем я вызываю функцию в другой функции и получаю эту ошибку:
Error in chartr("ÃÉÃÓÚÑáéÃóúñ", "AEIOUNaeioun", x) :
'old' is longer than 'new'
Итак, R кодирует латинские символы, которые я хочу удалить.
Есть ли способ определить remove_latin
, чтобы он не ломался все время?
Редактировать:
Несколько месяцев спустя появляется более конкретная информация об ошибке.
Я заметил, что наличие функции в исходном скрипте приводит к ошибке.
Но определение его само по себе этого не делает.
Комментарии:
1. Я не могу воспроизвести — здесь у меня все работает нормально. Хотя звучит как проблема с кодировкой. Можете ли вы поделиться какой-либо информацией из
Sys.getlocale()
?2. Спасибо. Я должен упомянуть, что я тоже на Windows, что, вероятно, является частью причины. В зависимости от локали:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
3. Я заметил кое-что интересное: если я определяю функцию без скобок:
remove_latin <- function (x) chartr("ÁÉÍÓÚÑáéíóúñ", "AEIOUNaeioun", x)
это не приводит к ошибке….4. Это звучит странно. Я не могу представить, что это будет иметь большое значение, но все работает.
5. Какая загадка. Думаю, я смогу с этим смириться.