Sys.setlocale(locale = foo)
默认为category = "LC_ALL"
; 可以单独为 R 进程设置语言环境的各个方面,例如如下:
locales <- c("LC_COLLATE","LC_CTYPE","LC_MONETARY","LC_NUMERIC","LC_TIME");
for (x in locales) { Sys.setlocale(category = x, locale="Japanese_Japan.65001")}
请注意上述代码片段中的所有警告以及语言环境的进一步说明
:Query or Set Aspects of the Locale文章:
- 在会话期间尝试更改字符集(通过
Sys.setlocale("LC_CTYPE", )
,如果这意味着不同的字符集)可能不起作用,并且可能会导致一些混乱。
- 设置
"LC_NUMERIC"
为除"C"
可能导致 R 功能异常之外的任何值,因此会发出警告。
- 几乎所有 R 本身在 Windows 下使用的输出例程都忽略了设置,
"LC_NUMERIC"
因为它们使用了未国际化的 Trio 库。
例如,我的语言环境是捷克语,所以我尝试了以下代码片段(在循环上方逐项列出以按顺序查看结果和警告):
Sys.getlocale(category = "LC_ALL")
Sys.setlocale(category = "LC_COLLATE" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_CTYPE" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_MONETARY", locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_NUMERIC" , locale="Czech_Czechia.65001")
Sys.setlocale(category = "LC_TIME" , locale="Czech_Czechia.65001")
Sys.getlocale(category = "LC_ALL")
输出(粘贴到 RStudio 控制台):
> Sys.getlocale()
[1] "LC_COLLATE=Czech_Czechia.1250;LC_CTYPE=Czech_Czechia.1250;LC_MONETARY=Czech_Czechia.1250;LC_NUMERIC=C;LC_TIME=Czech_Czechia.1250"
> Sys.setlocale(category = "LC_COLLATE" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.setlocale(category = "LC_CTYPE" , locale="Czech_Czechia.65001")
[1] ""
Warning message:
In Sys.setlocale(category = "LC_CTYPE", locale = "Czech_Czechia.65001") :
OS reports request to set locale to "Czech_Czechia.65001" cannot be honored
> Sys.setlocale(category = "LC_MONETARY", locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.setlocale(category = "LC_NUMERIC" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
Warning message:
In Sys.setlocale(category = "LC_NUMERIC", locale = "Czech_Czechia.65001") :
setting 'LC_NUMERIC' may cause R to function strangely
> Sys.setlocale(category = "LC_TIME" , locale="Czech_Czechia.65001")
[1] "Czech_Czechia.65001"
> Sys.getlocale(category = "LC_ALL")
[1] "LC_COLLATE=Czech_Czechia.65001;LC_CTYPE=Czech_Czechia.1250;LC_MONETARY=Czech_Czechia.65001;LC_NUMERIC=Czech_Czechia.65001;LC_TIME=Czech_Czechia.65001"
>