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

Использование не-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.

Поиск символов Юникода дает мне код &#163, но руководство, которое я могу найти для \uxxxx, минимально и относится к Java на W3schools.

Мой вопрос:

Как реализовать использование символов, отличных от юникода, в R-функциях с помощью экранов \uxxxx и как использование влияет на отображение таких символов после использования функции?

4b9b3361

Ответ 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"