在函数内部使用非ASCII字符

时间:2014-03-06 11:39:54

标签: r string unicode 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.

通过编写R扩展指南,它没有提供很多关于如何解决此问题的帮助(IMO)。它提到\ uxxxx并说它引用了Unicode字符。

查找unicode字符会产生代码&#163,但我可以找到的\uxxxx指南很少,与W3schools上的Java有关。

我的问题是:

如何使用\ uxxxx转义在R函数中实现非unicode字符的使用?在使用该函数后,使用情况如何影响这些字符的显示?

3 个答案:

答案 0 :(得分:13)

对于\ uxxxx转义,您需要知道角色的十六进制数。您可以使用charToRaw确定它:

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

现在您可以使用它来指定非ascii字符。 \u00A3£都代表相同的字符。

答案 1 :(得分:9)

试试这个:

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

答案 2 :(得分:1)

在以下情况下, stringi 软件包可能会有用:

int* newArray = new int[newSize];