排序:在连字符前放置空格

时间:2019-03-22 20:17:14

标签: r string sorting character

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

例如

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”选项进行排序,但是如果我希望列表升序排序,则一旦我的列表包含其他不重要的内容时,该选项将不成立。

1 个答案:

答案 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()