在R中使用英语获取工作日

在R中使用英语获取工作日,r,date,locale,weekday,R,Date,Locale,Weekday,我在美国境外使用R,所有东西都用英语,但weekdays()的结果仍然是西班牙语: Day <- seq(as.Date("2013-06-01"), by=1, len=30) weekdays(Day) [1] "sábado" "domingo" "lunes" "martes" "miércoles" (...) Day打印Date和POSIX*t对象似乎由LC\u TIME区域设置类别控制 在Windows上,您可以这样更改它: ## First, s

我在美国境外使用R,所有东西都用英语,但
weekdays()
的结果仍然是西班牙语:

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

Day打印
Date
POSIX*t
对象似乎由
LC\u 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" 
在大多数*NIXes上,等效值为:

Sys.setlocale("LC_TIME", "en_US")
特定的语言环境名称取决于操作系统,如
?Sys.setlocale
中所述。对于Windows接受的名称。对于Linux接受的名称,.

来自my,您可以在工作日获得英文版,而不会与以下区域设置发生冲突:

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

Sys.setlocale(“LC\U时间”、“英语”)

这是唯一对我有用的东西

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

他为我做了这件事。此外,这不会给我们带来操作系统报告将语言环境设置为“EN”的请求无法得到满足的错误消息。

我在尝试将语言环境从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)
curr\u locale这个怎么样:

dev_null <- Sys.setlocale("LC_TIME", "english")

dev_null,这是由于您在Linux/UNIX中的区域设置引起的。请尝试:(Sys.setenv(“LANGUAGE”=“En”)。我假设在Windows中也可以使用,但我不知道第一手资料。谢谢jim mcnamara,我正在使用Ubuntu,但即使在Sys.setenv之后,我仍然可以使用weeekdays()西班牙语!我没有答案。抱歉。这有用吗:
Sys.setlocale(“LC_TIME”,“en_US”);工作日(Sys.Date()+0:6)
?谢谢Josh O'Brien,这是我得到的:警告消息:在Sys.setlocale(“LC_TIME”,“en_US”):OS报告请求将区域设置为“en_US”不能作为受限用户使用,这对我在windows或linux上都不起作用-“OS reports request…cannot Loude”这可能是与Sys.setlocale
不同的参数。在Mac上,返回到英语的参数是“en_US.UTF-8”。谢谢大家!我相信这在Ubuntu中是有效的:>Sys.setlocale(“LC_TIME”,“C”)@eddi——这只是我在区域设置中使用无效名称时收到的错误消息……出于好奇,当您键入
Sys.getlocale(“LC\u TIME”)
时会得到什么?此外,这是否有效,还是会给您一个错误:
Sys.setlocale(“LC\u TIME”,Sys.getlocale(“LC\u TIME”))
?我明白了,谢谢。最后一个表达式没有错误,我在linux上的语言环境是“C”,在windows上是“English_United United.1252”。在windows上,“西班牙语现代排序”或“西班牙语现代排序”不起作用,但例如“西班牙语阿根廷”“行得通。我想这与操作系统设置的特殊性有关。你确定这不依赖于区域设置吗?工作日根本不从周日开始countries@eddi,我非常确定,因为
POSIXlt
是基于,并且
tm_wday
是“从周日开始的天”…编辑:而且因为
?POSIXlt
wday
是“一周中的0-6天,从周日开始。”列出日期与@EdgarGithub的答案有何不同?这不会导致此警告:警告消息:在Sys.setlocale(“LC_TIME”,“english”):OS报告将locale设置为“en_US”的请求无法执行@mrbeanbreman