Suppression des zéros de caractères alphanumériques dans la R
J'ai un caractère de vecteur de d
avec des caractères alphanumériques
d <- c("012309 template", "separate 00340", "00045", "890 098", "3405 garage", "matter00908")
d
[1] "012309 template" "separate 00340" "00045" "890 098" "3405 garage" "matter00908"
Comment puis-je supprimer les zéros de tous les nombres dans R?
as.numeric
va supprimer tous les zéros en tête uniquement en numérique ou un entier de vecteurs. J'ai essayé gsub
avec regex
, mais ne pouvait pas obtenir les résultats souhaités.
La sortie attendue est comme suit
out <- c("12309 template", "seperate 340", "45", "890 98", "3405 garage", "matter908")
out
[1] "12309 template" "seperate 340" "45" "890 98" "3405 garage" "matter908"
OriginalL'auteur Crops | 2014-05-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un négatif lookbehind pour éliminer les 0 que si elle est précédée par un chiffre:
Une autre façon en utilisant les regex:
Devrait être corrigé maintenant.
OriginalL'auteur devnull
Voici la solution en utilisant
stri_replace_all_regex
de la stringi package:Explication: Nous sommes correspondance de toutes les séquences de chiffres à l'intérieur des limites de mots (
\b
). Les zéros à droite sont appariés avec gourmandise (0+
). Les chiffres restants (\d
dénote un chiffre,\d+
dénote leur séquence non-vide) sont capturés à l'intérieur d'un groupe ((...)
). Puis nous remplaçons toutes ces rencontres avec le groupe capturé choses seulement.Si vous souhaitez également souhaitez supprimer 0s à l'intérieur des mots (comme dans votre exemple), omettez simplement
\b
et appel:modifié:
\d
dénote un chiffre,\d+
dénote leur séquence non-videOriginalL'auteur gagolews