Получить будние дни на английском языке в R
Я использую R за пределами США, и у меня все работает на английском языке, но результат weekdays()
по-прежнему находится на испанском языке:
Day <- seq(as.Date("2013-06-01"), by=1, len=30)
weekdays(Day)
[1] "sábado" "domingo" "lunes" "martes" "miércoles" (...)
Любые идеи о том, как получить будние дни на английском языке?
Ответы
Ответ 1
Печать объектов Date
и POSIX*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"
В большинстве * NIXes эквивалент будет:
Sys.setlocale("LC_TIME", "en_US")
Определенные имена локалей зависят от ОС, как указано в ?Sys.setlocale
. Для имен, принятых Windows, см. Здесь. Для имен, принятых Linux, см. Здесь.
Ответ 2
Из моего ответа здесь, вы можете получить будние дни на английском языке, не вникая в такие локали:
c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
Ответ 3
Sys.setlocale("LC_TIME", "C")
сделал трюк для меня. Также это не приносит нам OS reports request to set locale to "EN" cannot be honored
сообщение об ошибке.
Ответ 4
В окнах RStudio
Sys.setlocale("LC_TIME", "English")
Это единственное, что сработало для меня.
Ответ 5
Я столкнулся с той же проблемой, пытающейся изменить локаль от es_ES до en_US (оба UTF-8).
Сообщение R задается основной рабочей областью R, поскольку оно не может изменить языковой стандарт системы. Если код вставлен в R- script, создается новое рабочее пространство (работающее), а локаль может быть переопределена.
В моем коде я включил следующие строки:
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)
Это внесло изменения!