Не могу использовать chartr внутри функции

#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. Какая загадка. Думаю, я смогу с этим смириться.