r - 如何根据分隔符之前的值对R中的向量元素进行排序
问题描述
我有一个名为myvec
. 我想根据之前的数字对值进行排序-
。有什么建议吗?
myvec <- c("2-1_16S_S217_R1_001.fastq", "2-2_16S_S226_R1_001.fastq", "3-1_16S_S234_R1_001.fastq",
"3-2_16S_S242_R1_001.fastq", "11-1_16S_S199_R1_001.fastq", "1-1_16S_S197_R1_001.fastq",
"11-2_16S_S209_R1_001.fastq", "1-2_16S_S207_R1_001.fastq")
另外,当我这样做时sort (myvec)
,我得到:
[1] "1-1_16S_S197_R1_001.fastq" "1-2_16S_S207_R1_001.fastq" "11-1_16S_S199_R1_001.fastq" "11-2_16S_S209_R1_001.fastq"
[5] "2-1_16S_S217_R1_001.fastq" "2-2_16S_S226_R1_001.fastq" "3-1_16S_S234_R1_001.fastq" "3-2_16S_S242_R1_001.fastq"
也试过
require('gtools')
mixedsort(myvec)
这使:
[1] "1-2_16S_S207_R1_001.fastq" "1-1_16S_S197_R1_001.fastq" "2-2_16S_S226_R1_001.fastq" "2-1_16S_S217_R1_001.fastq"
[5] "3-2_16S_S242_R1_001.fastq" "3-1_16S_S234_R1_001.fastq" "11-2_16S_S209_R1_001.fastq" "11-1_16S_S199_R1_001.fastq"
我想要的结果:
1-1_16S_S197_R1_001.fastq
1-2_16S_S207_R1_001.fastq
2-1_16S_S217_R1_001.fastq
2-2_16S_S226_R1_001.fastq
3-1_16S_S234_R1_001.fastq
3-2_16S_S242_R1_001.fastq
11-1_16S_S199_R1_001.fastq
11-1_16S_S199_R1_001.fastq
解决方案
我们也可以使用str_sort
from stringr
:
stringr:::str_sort(myvec, numeric = TRUE)
# [1] "1-1_16S_S197_R1_001.fastq"
# [2] "1-2_16S_S207_R1_001.fastq"
# [3] "2-1_16S_S217_R1_001.fastq"
# [4] "2-2_16S_S226_R1_001.fastq"
# [5] "3-1_16S_S234_R1_001.fastq"
# [6] "3-2_16S_S242_R1_001.fastq"
# [7] "11-1_16S_S199_R1_001.fastq"
# [8] "11-2_16S_S209_R1_001.fastq"
推荐阅读
- css - div 不会随着屏幕尺寸的减小而改变位置
- java - 如何获取树形图中最高值元素的 id
- semantic-web - 如何添加参考资料(证明、文章等)及其数字副本?
- java - 在二维数组(8x8)中,如何递归打印从起始位置到结束位置的序列号?
- html - 如何将两个画布元素放在一起?
- vuejs2 - Hot Reloading Aframe from Vue CLI 3
- forms - XAML 控件布局,在视图上覆盖其他控件
- python-3.x - 如何在列表中添加信息
- mysql - Mysql:如何获得具有累积和的时间片查询(意外结果)
- python - 递归问题 ...Sierpinskis 三角形