我想对字符向量进行排序,但排序中的连字符前应有空格。
例如
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()