我在这些方面都有一个R函数:
swedish.weekday <- function(date = Sys.Date()) {
require(lubridate)
c("Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör")[wday(date)]
}
这将返回相当于Sun,Mon,Tue等的三个字母。
完全正常工作,直到我将这个函数包含在一个包中,在这个包中,函数转换为:
swedish.weekday <- function(date = Sys.Date()) {
require(lubridate)
c("Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör")[wday(date)]
}
我尝试将项目设置中的编码选项设置为ISO8859-1或WINDOWS-1252,但都不起作用。在Windows 7下使用64位R 3.1.2。
怀疑我需要在构建配置中更改某些内容,但我对于什么感到迷失 - 任何帮助/方向都非常感激!
答案 0 :(得分:1)
根据上面评论中发布的链接,我通过仅使用Unicode转义解决了这个问题:
day <- c("S\u00F6n", "M\u00E5n", "Tis", "Ons", "Tor", "Fre", "L\u00F6r")[wday(date)]
编辑:在将这些结果传递给外部系统(OLAP)时,我发现有必要强制将这些结果编码为ISO(“latin-9”),以确保它不仅在屏幕上看起来正确就系统而言day <- inconv(day, "UTF-8", "latin-9")
对于参考......
有一种可移植的方法可以在R代码中的字符串中使用任意文本(仅限),以Unicode格式提供它们作为\ uxxxx转义符。如果当前编码中没有任何字符,则解析器会将字符串编码为UTF-8并将其标记为。这也适用于数据集中的字符串:它们可以使用\ uxxxx转义编写或在UTF-8中以UTF-8语言环境编码,或甚至通过'iconv()'转换为UTF-8。如果这样做,请确保在DESCRIPTION文件的“取决于”字段中有“R(&gt; = 2.10)”(或更高版本)。