13

我的一个 R 包中有一个简单的函数,其中一个参数是symbol = "£"

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

但是在运行时R CMD check,我收到以下警告:

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

绝对是£导致问题的那个符号。如果我用合法的 ASCII 字符替换它,比如$,警告就会消失。

问题:如何£在我的函数参数中使用而不引起R CMD check警告?

4

2 回答 2

15

看起来“编写 R 扩展”在第 1.7.1 节“编码问题”中涵盖了这一点。


此页面中的一项建议是使用 Unicode 编码\uxxxx。由于 £ 是 Unicode 00A3,您可以使用:

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


formatPound(123.45)
[1] "£ 123.45"
于 2012-07-12T13:27:06.043 回答
5

作为一种解决方法,您可以使用intToUtf8()以下功能:

# 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))
于 2017-02-24T20:28:34.450 回答