使非ASCII数据适合CRAN

时间:2013-09-16 21:46:22

标签: r portability cran

我有一些包含非ASCII字符的数据,我希望将其作为rda文件包含在R包中。当我在包裹上运行R CMD check时,我收到警告:

Warning: found non-ASCII strings

阻止它在CRAN上被允许。

关于removing non-ASCII characters from data files有一个类似的问题,但我想保留非ASCII字符。

您可以抓取CSV数据here。我正在将其读入R并使用以下代码重新保存为rda

english_monarchs <- read.csv(
  wherever_you_downloaded_the_file_to, 
  fileEncoding     = "utf8",
  na.strings       = ""
)
save(english_monarchs, "english_monarchs.csv")

数据集的name列包含非ascii值。

head(levels(english_monarchs$name))
## [1] "Adda"                                "Æðelbehrt"                          
## [3] "Æðelberht I"                         "Æðelberht II and Eardwulf"          
## [5] "Æðelberht II, Ælfric and Eadberht I" "Æðelberht III"

根据写作R扩展的Encoding Issues部分中的(不太清楚)指导,我认为我应该将因子级别编码为UTF-8,但显而易见的方法不起作用:

Encoding(levels(english_monarchs$name)) <- "utf8"  #each encoding still "unknown"

如何使数据足够便携以便在CRAN上接受?

1 个答案:

答案 0 :(得分:12)

对我有用的是将编码声明为"latin1",然后使用iconv转换为UTF-8。

Encoding(levels(english_monarchs$name)) <- "latin1"
levels(english_monarchs$name) <- iconv(
  levels(english_monarchs$name), 
  "latin1", 
  "UTF-8"
)