21

我在美国以外的地方使用 R,我的一切都用英语工作,但结果weekdays()仍然是西班牙语:

Day <- seq(as.Date("2013-06-01"), by=1, len=30)
weekdays(Day)
[1] "sábado"    "domingo"   "lunes"     "martes"    "miércoles"  (...)

关于如何用英语获得工作日的任何想法?

4

6 回答 6

23

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 接受的名称,请参见此处

于 2013-06-10T19:21:45.737 回答
12

从我在这里的回答中,您可以用英语获得工作日,而不会弄乱这样的语言环境:

c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
  "Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
于 2013-06-10T20:11:05.713 回答
11
Sys.setlocale("LC_TIME", "C")

为我做了伎俩。这也不会给我们带来OS reports request to set locale to "EN" cannot be honored错误信息。

于 2014-09-10T17:09:30.080 回答
8

windows下的RStudio

Sys.setlocale("LC_TIME", "English")

那是唯一对我有用的东西。

于 2014-08-06T21:47:21.683 回答
2

我在尝试将语言环境从 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)

改变了!

于 2015-06-04T09:38:44.600 回答
0

这个怎么样:

dev_null <- Sys.setlocale("LC_TIME", "english")
于 2020-03-01T19:42:20.783 回答