Подтвердить что ты не робот

Как использовать символ не ASCII (например, £) в функции пакета R?

У меня есть простая функция в одном из моих R-пакетов с одним из аргументов symbol="£":

formatPound <- function(x, digits=2, nsmall=2, symbol="£"){ 
  paste(symbol, format(x, digits=digits, nsmall=nsmall)) 
}

Но при запуске R CMD check я получаю это предупреждение:

* checking R files for non-ASCII characters ... WARNING
Found the following files with non-ASCII characters:
  formatters.R

Это определенно символ £, который вызывает проблему. Если я заменил его на законный символ ASCII, например $, предупреждение исчезнет.

Вопрос: Как я могу использовать £ в аргументе моей функции, не вызывая предупреждения R CMD check?

4b9b3361

Ответ 1

Похоже, что "Написание R-расширений" охватывает это в разделе 1.7.1 "Проблемы с кодировкой" .


Одна из рекомендаций на этой странице - использовать кодировку Unicode \uxxxx. Поскольку E является Unicode 00A3, вы можете использовать:

formatPound <- function(x, digits=2, nsmall=2, symbol="\u00A3"){
  paste(symbol, format(x, digits=digits, nsmall=nsmall))
}


formatPound(123.45)
[1] "£ 123.45"

Ответ 2

В качестве обходного пути вы можете использовать функцию intToUtf8():

# this causes errors (non-ASCII chars)
f <- function(symbol = "➛")

# this also causes errors in Rd files (non-ASCII chars)
f <- function(symbol = "\u279B")

# this is ok
f <- function(symbol = intToUtf8(0x279B))