27

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

Warning: found non-ASCII strings

这阻止了它在 CRAN 上被允许。

有一个关于从数据文件中删除非 ASCII 字符的类似问题,但我想保留非 ASCII 字符。

您可以在此处获取 CSV 数据。我正在将其读入 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 扩展的编码问题部分中的(不是很清楚)指导,我认为我应该将因子级别编码为 UTF-8,但显而易见的方法不起作用:

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

如何使数据具有足够的可移植性以在 CRAN 上被接受?

4

1 回答 1

15

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

Encoding(levels(english_monarchs$name)) <- "latin1"
levels(english_monarchs$name) <- iconv(
  levels(english_monarchs$name), 
  "latin1", 
  "UTF-8"
)
于 2013-10-20T17:36:36.047 回答