米国外でRを使用していて、すべてが英語で機能していますが、weekdays()
の結果はまだスペイン語です。
Day <- seq(as.Date("2013-06-01"), by=1, len=30)
weekdays(Day)
[1] "sábado" "domingo" "lunes" "martes" "miércoles" (...)
平日を英語で取得する方法について何かアイデアはありますか?
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"
ほとんどの* NIXでは、同等のものは次のようになります。
Sys.setlocale("LC_TIME", "en_US")
?Sys.setlocale
で説明されているように、特定のロケール名はOSに依存します。 Windowsで受け入れられる名前については、 ここを参照 。 Linuxで受け入れられる名前については、 ここを参照 。
私の ここに答える から、次のようなロケールをいじることなく、平日を英語で取得できます。
c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
Sys.setlocale("LC_TIME", "C")
私のためにトリックをしました。また、これは私たちをもたらさないOS reports request to set locale to "EN" cannot be honored
エラーメッセージ。
WindowsRStudioの下
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")