如何在R中确定区域设置

时间:2018-06-16 10:22:30

标签: r locale

在日本语中, 我将env:LANGUAGE设置为' en_US'用英语显示错误消息。 这对我来说很好。

> Sys.setenv(LANGUAGE = "en_US")
> Sys.
Error: object 'Sys.' not found

但是当我更改区域设置时:LC_ALL为' en_US.UTF-8'在更改LANGUAGE之前, 错误消息未更改并显示在默认语言环境中。

> Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")
[1] "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=ja_JP.UTF-8;LC_PAPER=ja_JP.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=ja_JP.UTF-8;LC_IDENTIFICATION=C"
> Sys.
 エラー:  オブジェクト 'Sys.' がありません 
> Sys.setenv(LANGUAGE = "en_US")
> Sys.
 エラー:  オブジェクト 'Sys.' がありません 

我认为这是因为LC_ALL的优先级高于LANGUAGE 并有一些副作用,但这是错误的。 当我在LANGUAGE之后更改LC_ALL时,错误消息以英语显示。

> Sys.setenv(LANGUAGE = "en_US")
> Sys.
Error: object 'Sys.' not found
> Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")
[1] "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=ja_JP.UTF-8;LC_PAPER=ja_JP.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=ja_JP.UTF-8;LC_IDENTIFICATION=C"
> Sys.
Error: object 'Sys.' not found

为什么LC_ALL阻止LANGUAGE更改错误消息区域设置?

为什么更改LC_ALL和LANGUAGE的顺序会导致不同的结果?

默认环境:

> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.4 LTS

Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.6.0
LAPACK: /usr/lib/lapack/liblapack.so.3.6.0

locale:
 [1] LC_CTYPE=ja_JP.UTF-8       LC_NUMERIC=C               LC_TIME=ja_JP.UTF-8       
 [4] LC_COLLATE=ja_JP.UTF-8     LC_MONETARY=ja_JP.UTF-8    LC_MESSAGES=ja_JP.UTF-8   
 [7] LC_PAPER=ja_JP.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=ja_JP.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.4 tools_3.4.4   


> RStudio.Version()$version
[1] ‘1.1.447’

1 个答案:

答案 0 :(得分:0)

我不确定你想要实现的目标。但是,您应该知道,如帮助文件中所写:

  

请注意,设置类别“LC_ALL”仅设置类别“LC_COLLATE”,   “LC_CTYPE”,“LC_MONETARY”和“LC_TIME”

所以LC_ALL没有设置LC_MESSAGES,也会从上面的输出中看到。

后来:

  

请注意,LANGUAGE环境变量优先于   选择消息翻译语言时选择“LC_MESSAGES”   大多数R平台

了解详情:?Sys.setlocale()