在 R 中获取英语工作日



我在美国境外使用 R,我得到了所有内容都用英语工作,但weekdays()的结果仍然是西班牙语:

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

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

DatePOSIX*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 接受的名称,请参阅此处。

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

为我做了这个把戏。这也不会给我们带来OS reports request to set locale to "EN" cannot be honored错误消息。

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

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

Under 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")

我个人不喜欢修改Sys设置。使用 clock 包的替代解决方案是:

Date <- seq(as.Date("2013-06-01"), by = 1, len = 30)
# string representation
as.character(clock::date_weekday_factor(Date))
# factor representation
factor(clock::date_weekday_factor(Date, encoding = "iso"), ordered = F)

最新更新