【发布时间】:2013-09-21 04:24:28
【问题描述】:
我有一些包含非 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 上被接受?
【问题讨论】:
-
不确定有什么区别,但不应该是
"UTF-8"吗? -
@JoshuaUlrich R 理解带或不带破折号的编码。
iconvlist()包含两个字符串。 -
奇怪,因为我在 64 位 Ubuntu 和 Windows 7 上使用
"UTF-8"时更改了一些编码。 -
来自
?Encoding:R中的字符串可以声明为“latin1”或“UTF-8”或“bytes”。您不能使用任意编码标记字符串,例如iconv。 -
好的,
UTF-8也能正确更改我机器上的编码。如果你想把它写成答案,我会接受的。谢谢。
标签: r portability cran