【发布时间】:2023-12-26 20:33:01
【问题描述】:
1) 如何正确排序?
任务是根据英文字母对美国各州的缩写名称进行排序。但我注意到,R 排序列表基于某种操作系统语言或区域设置。例如,在我的语言(立陶宛语)中,甚至拉丁语(非立陶宛语)字母的顺序也与英语字母表中的顺序不同。仅比较两个字母表中非立陶宛语字母的顺序:
"ABCDEFGHI Y JKLMNOPRSTUVZ"
sort(LETTERS)
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "Y" "J" "K" "L" "M" "N"
[16] "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Z"
对比
"ABCDEFGHIJKLMNOPQRSTUVWX Y Z"
LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"
[16] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
所以各州的排序缩写顺序也不同(注意最后两个,它们应该是“WV”然后是“WY”):
sort(state.abb)
[1] "AK" "AL" "AR" "AZ" "CA" "CO" "CT" "DE" "FL" "GA" "HI" "IA"
[13] "ID" "IL" "IN" "KY" "KS" "LA" "MA" "MD" "ME" "MI" "MN" "MO"
[25] "MS" "MT" "NC" "ND" "NE" "NH" "NY" "NJ" "NM" "NV" "OH" "OK"
[37] "OR" "PA" "RI" "SC" "SD" "TN" "TX" "UT" "VA" "VT" "WA" "WI"
[49] "WY" "WV"
我试过Sys.setlocale("LC_TIME","English_United States.1252")。它有助于在绘图、图表和图形中获取工作日的英文名称。
现在我需要帮助才能以“英语”方式正确排序。
2) R 初学者还应注意哪些其他重要的与语言相关的设置?
如果您有建议,R 在哪里表现依赖于语言以及如何处理,请列出。
【问题讨论】:
-
您的操作系统语言/区域设置不是英语吗?
-
你试过
LC_ALL而不是LC_TIME吗?您可能猜到,LC_TIME仅影响与日期/时间相关的本地化。 — 另一件事,避免使用 Windows 字符编码(例如代码页 1252)。独占使用 UTF-8。 -
LC_ALL工作:> sort(LETTERS)[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"[16] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"谢谢康拉德鲁道夫。写下您的评论作为答案,我想接受它,以便对其他人更有帮助。 -
使用
stringi::stri_sort并通过stri_opts_collator传递您想要的任何语言环境,以便在不改变您的环境的情况下进行与语言相关的排序。
标签: r sorting non-english