Comment trier un personnage vectoriel où les éléments contiennent des lettres et des chiffres dans la R?
J'ai un tableau de caractères
cf <- c("V440","V457","V116","V327","V446","V108",
"V155","V217","V120","V51","V477")
Je tiens à les trier dans l'ordre décroissant de sorte que je vais avoir une sortie comme celle-ci:
V51
V108
V116
V120
V155
V217
V327
V440
V446
V457
V477
J'ai essayé sort.list()
comme ce
cf[sort.list(cf)]
et a obtenu cette réponse:
[1] "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477" "V51"
et j'ai aussi essayé order()
et a obtenu le même résultat.
Quelqu'un peut m'aider svp
Vous devez vous connecter pour publier un commentaire.
Essayer
mixedsort
de la "gtools" package:Si vous ne souhaitez pas utiliser
mixedsort
(je ne sais pas pourquoi on ne serait pas), et si votre vecteur a un peu près le même modèle (par exemple, lettres suivies de chiffres), vous pouvez aussi probablement essayer quelque chose comme cela. (Note: Relativement inexpérimentés.)Beaucoup de bonnes réponses ici, c'est une autre façon, juste pour le plaisir.
Un plus solution en une ligne de code à l'aide de
str_sort
fonction (à partir de lastringr
packg.)str_sort(cf, numeric = TRUE)
Juste gratter le précédent "V" caractère de construire un tri vecteur. Aucune autre fantaisie outils nécessaires.
R correctement les commandes des chaînes par ordre alphabétique, c'est pourquoi vous obtenez ce résultat.
Côté de @Ananda très bonne réponse, si vous souhaitez utiliser la base de R vous pouvez utiliser
strsplit
pour supprimer le "V" de chaque chaîne et ensuite utiliseras.numeric
de jeter les chaînes de caractères en nombres entiers:Maintenant, vous pouvez trier vos chaînes à l'aide d'
vals
Voici une base de l'approche utilisant
names
etsort
(Ananda était assez lisse):