在R中获得英语的工作日

Ren*_*007 19 locale r date weekday

我使用R中的美国以外,我得到了一切工作语言为英语,但结果weekdays()仍是西班牙语:

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

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

Jos*_*ien 21

打印DatePOSIX*t对象似乎由LC_TIME区域设置类别控制.

在Windows上,您可以像这样更改它:

## 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" 
Run Code Online (Sandbox Code Playgroud)

在大多数*NIXes上,等效的是:

Sys.setlocale("LC_TIME", "en_US")
Run Code Online (Sandbox Code Playgroud)

特定的语言环境名称取决于操作系统,如中所述?Sys.setlocale.对于Windows接受的名称,请参见此处.对于Linux接受的名称,请参见此处.


GSe*_*See 10

从我在这里的答案,你可以用英语获得平日,而不会像这样处理以下语言环境:

c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
  "Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
Run Code Online (Sandbox Code Playgroud)

  • @eddi,我很确定,因为`POSIXlt`基于[struct tm](http://www.cplusplus.com/reference/ctime/tm/),`tm_wday`是"自星期日以来的日子"......编辑:因为`?POSIXlt`说`wday`是"星期日开始的0-6天". (2认同)

小智 8

在 Windows RStudio 下

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

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


dai*_*nys 8

Sys.setlocale("LC_TIME", "C")
Run Code Online (Sandbox Code Playgroud)

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