[英]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字符會產生代碼£
但我可以找到的\\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.