Je voudrais supprimer des caractères spécifiques des chaînes d'un vecteur, similaire à la fonction Rechercher et remplacer dans Excel.
Voici les données avec lesquelles je commence:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Je commence par juste la première colonne; Je veux produire la deuxième colonne en supprimant les e
:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
fixed = TRUE
rendrait cela plus rapide.fixed=TRUE
empêche R d'utiliser des expressions régulières, ce qui permet une correspondance de modèle plus flexible mais prend du temps à calculer. Si tout ce qui est nécessaire est de supprimer une seule chaîne constante "e", elles ne sont pas nécessaires.sub("e", "", group)
le même résultat?e
qu'il trouve dans chaque élémentLes expressions régulières sont vos amis:
Utilisez maintenant
gsub()
avec le modèle de remplacement le plus simple possible: chaîne vide:la source
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
enveloppementssub
, donc il ne remplacera la première occurrence du motif. Vous auriez besoin d'utiliserstr_replace_all
si vous vouliez le même comportement quegsub
.Résumant 2 façons de remplacer les chaînes:
1) Utiliser
gsub
2) Utilisez le
stringr
packageLes deux produiront la sortie désirée:
la source
Vous n'avez pas besoin de créer un bloc de données à partir du vecteur de chaînes, si vous souhaitez y remplacer certains caractères. Les expressions régulières sont un bon choix car elles ont déjà été mentionnées par @Andrie et @Dirk Eddelbuettel.
Faites attention, si vous souhaitez remplacer des caractères spéciaux, comme des points, vous devez utiliser la syntaxe d'expression régulière complète, comme indiqué dans l'exemple ci-dessous:
cela produira
la source
gsub("\\.", " ", ctr_names)
Utilisez le package stringi :
la source
la source