Ste*_*eve 4 sorting ascii r dataframe
我正在尝试对 R 中的数据帧进行排序,发现排序顺序与预期的 ascii 排序顺序不匹配。我需要以与 Python 对数据排序相同的方式对 R 中的数据帧进行排序。
df = df[do.call(order, df), ] # sort by all columns
Run Code Online (Sandbox Code Playgroud)
如此处所示,Python 将大写字母排在小写字母之前:
$ python
Python 3.7.12 | packaged by conda-forge | (default, Oct 26 2021, 06:08:53)
>>> "A" < "a"
True
Run Code Online (Sandbox Code Playgroud)
但 R 将大写字母排在小写字母之后:
$ R
R version 3.2.0 (2015-04-16) -- "Full of Ingredients"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
Natural language support but running in an English locale
> "A" < "a"
[1] FALSE
> "A" > "a"
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
如何更改 R 排序行为以匹配标准 ASCII 排序?order 函数是否有一些参数,或者是否有一些配置设置来更改排序顺序?
注意:这不是区分大小写和不区分大小写的排序 - 比这更糟糕 - 区分大小写的排序具有非标准顺序。
不同的语言环境使用不同的排序顺序,包括大小写规则:您可能想要使用Sys.setlocale(locale = "C"). (这里有关于区域设置定义和大小写排序顺序的更多信息。)
?比较说明了一些关于特定于区域设置的排序......
\n\n\n区域设置(例如 \xe2\x80\x98en_US\xe2\x80\x99)的整理顺序通常与 \xe2\x80\x98C\xe2\x80\x99(应使用 ASCII)\n不同,并且可能\n令人惊讶。
\n
...但据我所知,没有明确说明案例顺序(在页面中搜索“案例”没有得到任何命中)。
\n> Sys.getlocale()\n[1] "en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8"\n> "A" < "a"\n[1] FALSE\n> Sys.setlocale(locale = "C")\n[1] "C/C/C/C/C/en_CA.UTF-8"\n> "A" < "a"\n[1] TRUE\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |