R中是否有内置功能可以对字符向量进行排序?sort并order忽略这种情况:
tv <- c("a", "A", "ab", "B")
sort(tv)
## [1] "a" "A" "ab" "B"
Run Code Online (Sandbox Code Playgroud)
到目前为止这是我的解决方案:
CAPS <- grep("^[A-Z]", tv)
c(sort(tv[CAPS]), sort(tv[-CAPS]))
## [1] "A" "B" "a" "ab"
Run Code Online (Sandbox Code Playgroud) 我有以下向量:
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) 这是一个小的data.frame:
e = data.frame(A=c(letters[1:5], 1:5))
Run Code Online (Sandbox Code Playgroud)
关于执行以下命令时发生的事情,我有点困惑:
unclass(e$A) %>% as.numeric()
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[1] 6 7 8 9 10 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
为什么a:e被视为6:10?
如果我有价值观:
x <- 'random'
y <- 'word'
Run Code Online (Sandbox Code Playgroud)
我可以在y之前或之后按字母顺序进行测试吗?在这个例子中类似于一个会产生的函数:
按字母顺序排列(x,y) - >真
按字母顺序排列(y,x) - >错误