按特定顺序仅排序第一个字符

Cel*_*lso 6 sorting r

我有这样的角色矢量:

stuff <- c("3S", "AH", "2I", "B4", "AL")
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的"位置"矢量:

pos <- c("3", "B", "A", "2")
Run Code Online (Sandbox Code Playgroud)

我想使用最后一个向量作为参考,通过仅查看每个元素的第一个字符来对第一个向量进行排序; 我不关心第二个角色.也就是说,我想写和函数一样specialsort(stuff, pos),我的结果应该是c("3S", "B4", "AH", "AL", "2I").

sgi*_*ibb 7

你可以substring用来提取你的第一个字母,stuff并将match你的矢量与引用相匹配:

# find index in pos
i <- match(substring(stuff, 1, 1), pos)

# order by pos
o <- order(i)

stuff[o]
# [1] "3S" "B4" "AH" "AL" "2I"
Run Code Online (Sandbox Code Playgroud)