你可以通过巧妙(如果我可以这么说)的操作,涉及到factors
的转置来完成它:
stuff[order(factor(sapply(stuff,function(x)unlist(strsplit(x,''))[1]),levels=pos))]
编辑以添加一些解释和简化:
第一部分是仅隔离您的“stuff”向量的第一个字符。可以使用以下方法完成:
> sapply(stuff,function(x)unlist(strsplit(x,''))[1])
3S AH 2I B4 AL
"3" "A" "2" "B" "A"
然后,您可以使用向量pos
作为级别将其转换为因子:
> factor(sapply(stuff,function(x)unlist(strsplit(x,''))[1]),levels=pos)
3S AH 2I B4 AL
3 A 2 B A
Levels: 3 B A 2
最后,您可以从这些因素中得到正确的顺序:
> order(factor(sapply(stuff,function(x)unlist(strsplit(x,''))[1]),levels=pos))
[1] 1 4 2 5 3
完成只需从原始的stuff
向量中取一个子集:
> stuff[order(factor(sapply(stuff,function(x)unlist(strsplit(x,''))[1]),levels=pos))]
[1] "3S" "B4" "AH" "AL" "2I"
stuff[order(match(substr(stuff,1,1),pos))]
- thelatemail