我想对字符向量进行排序,但是排序中的连字符前面必须有空格。
例如
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”选项进行排序,但是如果我希望列表升序排序,则一旦我的列表包含其他不重要的内容时,该选项将不成立。
答案 0 :(得分:2)
正如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()