我想对字符向量进行排序,但排序中的连字符前应有空格。

例如

c("Want-#3","Want #2","I want to be first") %>% sort()
[1] "I want to be first" "Want-#3"            "Want #2"


我希望它回来了

    [1] "I want to be first" "Want #2"            "Want-#3"


显然,我本可以使用“ decreasing”选项进行排序,但是如果我希望列表进行升序排序,一旦我的列表中包含其他不重要的内容,该选项将不成立。

最佳答案

正如divibisan提到的,排序取决于locale,您可以通过运行Sys.getlocale()来检查语言环境

运行下面的代码将关闭特定于语言环境的排序,并产生所需的结果。我不确定它可能会影响其他R进程,因此我会谨慎使用它。

string1<-c("Want-#3","Want #2","I want to be first")
string1 %>% sort()

old <- Sys.getlocale("LC_COLLATE") #Saving my original locale to an object named "old"

Sys.setlocale("LC_COLLATE", "C") # Turns off locale specific sorting
string1 %>% sort() # Sorting should now produce desired results


然后将R返回到原始语言环境即可运行

Sys.setlocale("LC_COLLATE", old)
string1 %>% sort()

10-05 22:28