Имена переменных Юникода в R - PullRequest
0 голосов
/ 25 августа 2018

Я работал над игрушечным проектом и пытался использовать некоторые имена переменных Юникода, чтобы соответствовать бумаге, которую я пытался реализовать.

Следующий код прекрасно работает на R 3.4.3 в Windows (версия RStudio 1.1.456) и R 3.5.1 на OSX:

> µ  <- function(ß,  n) ß  *  n 
> µ(2, 3)
[1] 6

Этот код выдает следующую ошибку, где α набирается как ALT + 224:

> α <- 2
Error: unexpected input in "\"

Файл был сохранен как UTF-8, поэтому меня это удивляет.

make.names согласуется с результатами выше:

> make.names('µ')
[1] "µ"
> make.names('α')
[1] "a"

Каково правило для букв не ASCII, почему mu и scharfes в порядке, а alpha - нет?

Редактировать: Вывод sessionInfo()

> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.3 tools_3.4.3    yaml_2.2.0 

Edit2: Это кажется, что Sys.setlocale должно быть ответом, но вот что происходит, когда я пытаюсь это сделать:

> Sys.setlocale("LC_ALL", 'en_US.UTF-8')
[1] ""
Warning message:
In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
  OS reports request to set locale to "en_US.UTF-8" cannot be honored

1 Ответ

0 голосов
/ 25 августа 2018

Работая с Беном Болкером , мы определили проблему, заключающуюся в том, что в текущем сеансе используется кодировка символов Windows-1252 , в которой есть некоторые символы, отличные от ASCII, но не так много.И это несмотря на то, что RStudio сохранил файл как UTF-8.

Попытка изменить текущую сортировку запущенного сеанса R не представляется возможной?По крайней мере, в Windows я получаю предупреждение (см. Вопрос и здесь ).

У меня есть частичное решение, если кто-то оказывается в ситуации, когда ему выдают файл, подобный этому, иЕсли вы хотите запустить его и иметь интерактивный доступ к результатам, в основном будет работать следующее (переменные будут переведены в Win-1252):

> source('utf-8-file.r', encoding='UTF-8')

Я был бы очень рад увидеть лучшее решение, такое, котороепозволяет редактировать и запускать файл, а также вводить такие фрагменты в консоль RStudio в Windows.

...