Использование не-ASCII-символов внутри функций для пакетов
Я пытаюсь написать функцию, эквивалентную scales::dollar
, которая добавляет символ фунта (£) к началу фигуры. Поскольку код весов настолько устойчив, я использовал его в качестве рамки и просто заменил $на £.
Пример урезанной функции:
pounds<-function(x) paste0("£",x)
Когда я запускаю CHECK, я получаю следующее:
Found the following file with non-ASCII characters:
pounds.R
Portable packages must use only ASCII characters in their R code,
except perhaps in comments.
Use \uxxxx escapes for other characters.
Просматривая руководство по расширению Writing R, он не дает много помощи (IMO) о том, как решить эту проблему. Он упоминает \uxxxx и говорит, что он относится к символам Unicode.
Поиск символов Юникода дает мне код £
, но руководство, которое я могу найти для \uxxxx
, минимально и относится к Java на W3schools.
Мой вопрос:
Как реализовать использование символов, отличных от юникода, в R-функциях с помощью экранов \uxxxx и как использование влияет на отображение таких символов после использования функции?
Ответы
Ответ 1
Для выхода из \uxxxx вам нужно знать шестнадцатеричное число вашего персонажа. Вы можете определить это, используя charToRaw
:
sprintf("%X", as.integer(charToRaw("£")))
[1] "A3"
Теперь вы можете использовать это, чтобы указать свой не ascii персонаж. \u00A3
и £
представляют один и тот же символ.
Другой вариант - использовать stringi::stri_escape_unicode
:
library(stringi)
stringi::stri_escape_unicode("➛")
# "\\u279b"
Это информирует вас о том, что "\u279b"
представляет персонажа "➛"
.
Ответ 2
Попробуйте следующее:
pounds<-function(x) paste0("\u00A3",x)
Ответ 3
Пакет stringi может быть полезен в следующих ситуациях:
library(stringi)
stri_escape_unicode("£")
#> [1] "\\u00a3"