How to use a non-ASCII symbol (e.g. £) in an R pac

2019-01-27 16:39发布

问题:

I have a simple function in one of my R packages, with one of the arguments symbol = "£":

formatPound <- function(x, digits = 2, nsmall = 2, symbol = "£"){ 
  paste(symbol, format(x, digits = digits, nsmall = nsmall)) 
}

But when running R CMD check, I get this warning:

* checking R files for non-ASCII characters ... WARNING
Found the following files with non-ASCII characters:
  formatters.R

It's definitely that £ symbol that causes the problem. If I replace it with a legitimate ASCII character, like $, the warning disappears.

Question: How can I use £ in my function argument, without incurring a R CMD check warning?

回答1:

Looks like "Writing R Extensions" covers this in Section 1.7.1 "Encoding Issues".


One of the recommendations in this page is to use the Unicode encoding \uxxxx. Since £ is Unicode 00A3, you can use:

formatPound <- function(x, digits=2, nsmall=2, symbol="\u00A3"){
  paste(symbol, format(x, digits=digits, nsmall=nsmall))
}


formatPound(123.45)
[1] "£ 123.45"


回答2:

As a workaround, you can use intToUtf8() function:

# this causes errors (non-ASCII chars)
f <- function(symbol = "➛")

# this also causes errors in Rd files (non-ASCII chars)
f <- function(symbol = "\u279B")

# this is ok
f <- function(symbol = intToUtf8(0x279B))