我有一些包含非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")

这是包含非ascii值的数据集的name列。
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上被接受?

最佳答案

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

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

07-24 09:51
查看更多