我在美国以外的地方使用 R,我的一切都用英语工作,但结果weekdays()
仍然是西班牙语:
Day <- seq(as.Date("2013-06-01"), by=1, len=30)
weekdays(Day)
[1] "sábado" "domingo" "lunes" "martes" "miércoles" (...)
关于如何用英语获得工作日的任何想法?
Date
和对象的打印POSIX*t
似乎由LC_TIME
语言环境类别控制。
在 Windows 上,您可以像这样更改它:
## First, save the current value so we can restore it later
Sys.getlocale("LC_TIME")
# [1] "English_United States.1252"
## First in Spanish
Sys.setlocale("LC_TIME","Spanish Modern Sort")
# [1] "Spanish_Spain.1252"
weekdays(Sys.Date()+0:6)
# [1] "lunes" "martes" "miércoles" "jueves" "viernes" "sábado"
# [7] "domingo"
## Then back to (US) English
Sys.setlocale("LC_TIME","English United States")
# [1] "English_United States.1252"
weekdays(Sys.Date()+0:6)
# [1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"
# [7] "Sunday"
在大多数 *NIX 上,等价于:
Sys.setlocale("LC_TIME", "en_US")
特定的语言环境名称取决于操作系统,如?Sys.setlocale
. 有关 Windows 接受的名称,请参见此处。有关 Linux 接受的名称,请参见此处。
从我在这里的回答中,您可以用英语获得工作日,而不会弄乱这样的语言环境:
c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
Sys.setlocale("LC_TIME", "C")
为我做了伎俩。这也不会给我们带来OS reports request to set locale to "EN" cannot be honored
错误信息。
windows下的RStudio
Sys.setlocale("LC_TIME", "English")
那是唯一对我有用的东西。
我在尝试将语言环境从 es_ES 更改为 en_US(均为 UTF-8)时遇到了同样的问题。
R 消息由 R 主工作区给出,因为它不能更改系统区域设置。如果将代码插入到 R 脚本中,则会创建一个新的工作区(正在运行的工作区),并且可以覆盖区域设置。
在我的代码中,我包含了以下几行:
curr_locale <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME","en_US.UTF-8")
#<specific code for graph generation>
Sys.setlocale("LC_TIME",curr_locale)
改变了!
这个怎么样:
dev_null <- Sys.setlocale("LC_TIME", "english")