不区分大小写的R中的字符串向量

pdu*_*ois 7 r

我有以下向量:

 mylist <- c("MBT.LN.ID", "ISA51VG.LN.ID", "R848.LN.ID", "sHz.LN.ID", "FK565.LN.ID",
    "bCD.LN.ID", "MALP2s.LN.ID", "ADX.LN.ID", "AddaVax.LN.ID", "FCA.LN.ID",
    "Pam3CSK4.LN.ID", "D35.LN.ID", "ALM.LN.ID", "K3.LN.ID", "K3SPG.LN.ID",
    "MPLA.LN.ID", "DMXAA.LN.ID", "cGAMP.LN.ID", "Poly_IC.LN.ID",
    "cdiGMP.LN.ID")
Run Code Online (Sandbox Code Playgroud)

我想以不区分大小写的方式按字母顺序对它们进行排序.

预期的输出是这样的:

 [1] "AddaVax.LN.ID"  "ADX.LN.ID"      "ALM.LN.ID"      "bCD.LN.ID"      "cdiGMP.LN.ID"   "cGAMP.LN.ID"   
 [7] "D35.LN.ID"      "DMXAA.LN.ID"    "FCA.LN.ID"      "FK565.LN.ID"    "ISA51VG.LN.ID"  "K3.LN.ID"      
[13] "K3SPG.LN.ID"    "MALP2s.LN.ID"   "MBT.LN.ID"      "MPLA.LN.ID"     "Pam3CSK4.LN.ID" "Poly_IC.LN.ID" 
[19] "R848.LN.ID"     "sHz.LN.ID"   
Run Code Online (Sandbox Code Playgroud)

我尝试了但失败了(使用R.3.2.0 alpha):

> sort(mylist)
 [1] "ADX.LN.ID"      "ALM.LN.ID"      "AddaVax.LN.ID"  "D35.LN.ID"
 [5] "DMXAA.LN.ID"    "FCA.LN.ID"      "FK565.LN.ID"    "ISA51VG.LN.ID"
 [9] "K3.LN.ID"       "K3SPG.LN.ID"    "MALP2s.LN.ID"   "MBT.LN.ID"
[13] "MPLA.LN.ID"     "Pam3CSK4.LN.ID" "Poly_IC.LN.ID"  "R848.LN.ID"
[17] "bCD.LN.ID"      "cGAMP.LN.ID"    "cdiGMP.LN.ID"   "sHz.LN.ID"
Run Code Online (Sandbox Code Playgroud)

luk*_*keA 14

尝试

mylist[order(tolower(mylist))]
Run Code Online (Sandbox Code Playgroud)


Dav*_*urg 6

如@Pascal所述,这是记录在案help(Comparison)并且sort是本地特定的.一个选项是切换您的本地(例如Sys.setlocale("LC_TIME", "us")),但这可能不方便.另一种选择可能是使用gtools::mixedsort也可能有用,因为你的字符串也包含数字.

library(gtools)
mixedsort(mylist)

# [1] "AddaVax.LN.ID"  "ADX.LN.ID"      "ALM.LN.ID"      "bCD.LN.ID"      "cdiGMP.LN.ID"   "cGAMP.LN.ID"    "D35.LN.ID"      "DMXAA.LN.ID"    "FCA.LN.ID"      "FK565.LN.ID"   
# [11] "ISA51VG.LN.ID"  "K3.LN.ID"       "K3SPG.LN.ID"    "MALP2s.LN.ID"   "MBT.LN.ID"      "MPLA.LN.ID"     "Pam3CSK4.LN.ID" "Poly_IC.LN.ID"  "R848.LN.ID"     "sHz.LN.ID"
Run Code Online (Sandbox Code Playgroud)