簡體   English   中英

在函數內部使用非ASCII字符

[英]Using non-ASCII characters inside functions for packages

我正在嘗試編寫一個等同於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.

通過編寫R擴展指南,它沒有提供很多幫助(IMO)如何解決此問題。 它提到\\ uxxxx並說它引用了Unicode字符。

查找unicode字符會產生代碼&#163但我可以找到的\\uxxxx是最小的並且與W3schools上的Java有關。

我的問題是:

如何使用\\ uxxxx轉義在R函數中實現非unicode字符的使用?在使用該函數后,使用情況如何影響這些字符的顯示?

對於\\ uxxxx轉義,您需要知道角色的十六進制數。 您可以使用charToRaw確定它:

sprintf("%X", as.integer(charToRaw("£")))
[1] "A3"

現在,您可以使用它來指定非ascii字符。 £代表相同的角色。

另一種選擇是使用stringi::stri_escape_unicode

library(stringi)
stringi::stri_escape_unicode("➛")
# "\\u279b"

這會通知您"\➛"代表字符"➛"

嘗試這個:

pounds<-function(x) paste0("\u00A3",x)

在這些情況下, stringi包可能很有用:

library(stringi)

stri_escape_unicode("£")
#> [1] "\\u00a3"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM