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