gpt4 book ai didi

R sort() 忽略 Ubuntu 16.04 上的语言环境

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:40 25 4
gpt4 key购买 nike

我在 Ubuntu 16.04 和 Ubuntu 18.04 上的 R 版本 3.6.0 中运行了以下代码:

Sys.getlocale(category = "LC_COLLATE")
sid = c("MEL058", "NE-ICU011", "NE-ICU012", "NE-ICU014", "NE023", "NE035")
print(sort(sid))

在 Ubuntu 16.04 上,我得到:

[1] "en_US.UTF-8"
[1] "MEL058" "NE023" "NE035" "NE-ICU011" "NE-ICU012" "NE-ICU014"

在 Ubuntu 18.04 上,我得到:

[1] "en_US.UTF-8"
[1] "MEL058" "NE-ICU011" "NE-ICU012" "NE-ICU014" "NE023" "NE035"

可以看出,语言环境在两个平台上是相同的。 sessionInfo() 也是一样的,只是结果不同。什么解释?

最佳答案

部分根据@Roland 的评论回答我自己的问题:

可以选择构建 R 以使用 ICU Unicode 库 http://site.icu-project.org/home . ICU的存在影响sort()字符串上的结果。

显然,在 Ubuntu 16.04 上构建的 R 3.6.0 不包括 ICU 支持;这建立在 18.04 上。这解释了为什么 sort() 对字符串起作用在两个平台上给出不同的结果。

要了解您的 R 构建是否使用 ICU,请键入(为 Ubuntu 提供的示例16.04,R 3.6.0 版本):

> icuGetCollate()
[1] "ICU not in use"

如果你想使用 ASCII 整理顺序,发出这个命令

Sys.setlocale(category = "LC_COLLATE", locale = "C")

在排序()之前。这将在不同操作系统中产生相同的结果。

理想情况下,sessionInfo() 应该说明 R 是否使用 ICU。正确的现在,这些信息基本上对不知情的用户隐藏icuGetCollat​​e()。

关于R sort() 忽略 Ubuntu 16.04 上的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com