Как использовать символ не 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
?
Ответы
Ответ 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))