2012-07-12 31 views
10

我有一個簡單的功能在我的R封裝之一,自變量symbol="£"之一:運行R CMD check如何在R包函數中使用非ASCII符號(例如£)?

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

但是,我得到這樣的警告:

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

這絕對是£符號導致問題。如果我用合法的ASCII字符(如$)替換它,警告消失。

問題:如何在我的函數參數中使用£,而不會產生R CMD check警告?

+0

也許通過指定的編碼參數,並設置以Latin1或UTF-8? – 2012-07-12 13:25:53

回答

10

看起來像「Writing R Extensions」在第1.7.1節"Encoding Issues"中涵蓋了這一點。


本頁中的推薦之一是使用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" 
+0

謝謝。這真的很有幫助。我已經編輯了你的答案,在其建議中更具體。 (另外,使用這個警告消息的Google搜索只會導致包含這個警告的軟件包列表!)。 – Andrie 2012-07-12 14:04:09

+0

謝謝你,是/有點時間緊張,所以不能擴大... – 2012-07-12 14:06:42

+0

這種方法的問題是,例如, roxygen2 v6.0.1生成Rd文件,稍後在R CMD檢查中會導致錯誤(非ASCII字符)。請參閱下面的解決方法。 – 2017-02-24 20:31:00

3

作爲一種變通方法,可以使用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)) 
+0

不錯,謝謝你。 – 2017-02-24 21:00:50

+0

我還發現'testthat'軟件包在運行包含UTF-8字符的測試時出現問題。 – 2017-03-09 08:45:14

相關問題