R 中的 Unicode 变量名
Unicode Variable Names in R
我正在做一个玩具项目并尝试使用一些 unicode 变量名来匹配我试图实现的论文。
以下代码在 Windows 上的 R 3.4.3(RStudio 版本 1.1.456)和 OSX 上的 R 3.5.1 上运行良好:
> µ <- function(ß, n) ß * n
> µ(2, 3)
[1] 6
此代码给出以下错误,α 键入为 ALT+224:
> α <- 2
Error: unexpected input in "\"
文件保存为 UTF-8,所以这让我很惊讶。
make.names
与上面的结果一致:
> make.names('µ')
[1] "µ"
> make.names('α')
[1] "a"
非 ASCII 字母的规则是什么,为什么 mu 和 scharfes 可以但 alpha 不行?
编辑:sessionInfo()
的输出
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.3 tools_3.4.3 yaml_2.2.0
Edit2:seems like Sys.setlocale
应该是答案,但是当我尝试这个时会发生以下情况:
> Sys.setlocale("LC_ALL", 'en_US.UTF-8')
[1] ""
Warning message:
In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
OS reports request to set locale to "en_US.UTF-8" cannot be honored
使用 Ben Bolker we determined the issue was that the current session was using character encoding Windows-1252,它有一些非 ASCII 字符,但不多。这是尽管 RStudio 将文件保存为 UTF-8。
似乎无法尝试更改 运行ning R 会话的当前排序规则?至少在 Windows 我收到警告(参见问题和 here)。
我有一个部分解决方案,如果有人发现自己处于这样的情况下,他们得到了这样的文件并且想要 运行 它并可以交互式访问结果,则以下方法主要有效(变量将被翻译成 Win-1252):
> source('utf-8-file.r', encoding='UTF-8')
我会很高兴看到更好的解决方案,它允许编辑和 运行 文件并将这些片段输入 Windows 上的 RStudio 控制台。
我正在做一个玩具项目并尝试使用一些 unicode 变量名来匹配我试图实现的论文。
以下代码在 Windows 上的 R 3.4.3(RStudio 版本 1.1.456)和 OSX 上的 R 3.5.1 上运行良好:
> µ <- function(ß, n) ß * n
> µ(2, 3)
[1] 6
此代码给出以下错误,α 键入为 ALT+224:
> α <- 2
Error: unexpected input in "\"
文件保存为 UTF-8,所以这让我很惊讶。
make.names
与上面的结果一致:
> make.names('µ')
[1] "µ"
> make.names('α')
[1] "a"
非 ASCII 字母的规则是什么,为什么 mu 和 scharfes 可以但 alpha 不行?
编辑:sessionInfo()
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.3 tools_3.4.3 yaml_2.2.0
Edit2:seems like Sys.setlocale
应该是答案,但是当我尝试这个时会发生以下情况:
> Sys.setlocale("LC_ALL", 'en_US.UTF-8')
[1] ""
Warning message:
In Sys.setlocale("LC_ALL", "en_US.UTF-8") :
OS reports request to set locale to "en_US.UTF-8" cannot be honored
使用 Ben Bolker we determined the issue was that the current session was using character encoding Windows-1252,它有一些非 ASCII 字符,但不多。这是尽管 RStudio 将文件保存为 UTF-8。
似乎无法尝试更改 运行ning R 会话的当前排序规则?至少在 Windows 我收到警告(参见问题和 here)。
我有一个部分解决方案,如果有人发现自己处于这样的情况下,他们得到了这样的文件并且想要 运行 它并可以交互式访问结果,则以下方法主要有效(变量将被翻译成 Win-1252):
> source('utf-8-file.r', encoding='UTF-8')
我会很高兴看到更好的解决方案,它允许编辑和 运行 文件并将这些片段输入 Windows 上的 RStudio 控制台。