Ici Remplacez plusieurs chaînes dans une instruction gsub () ou chartr () dans R? il est expliqué de remplacer plusieurs chaînes d'un caractère at dans une instruction par gsubfn () . Par exemple :
x <- "doremi g-k"
gsubfn(".", list("-" = "_", "doremi" = ""), x)
# "doremi g_k"
Je voudrais cependant remplacer la chaîne 'doremi' dans l'exemple par ''. Cela ne fonctionne pas:
x <- "doremi g-k"
gsubfn(".", list("-" = "_", " " = ""), x)
# "doremig_k"
Je suppose que c'est à cause du fait que la chaîne 'doremi' contient plusieurs caractères et moi utilisant le métacaractère . dans gsubfn . Je ne sais pas par quoi le remplacer - je dois avouer que je trouve parfois l'utilisation des métacaractères un peu difficile à comprendre. Alors, y a-t-il un moyen pour moi de remplacer «-» et «doremi» à la fois?
3 Réponses :
Est-ce que cela fonctionne pour vous?
gsubfn::gsubfn(pattern = "doremi|-", list("-" = "_", "doremi" = ""), x)
[1] " g_k"
La clé est cette recherche: "doremi | -" qui indique de rechercher soit "doremi" ou "-" . Utilisez "|" comme opérateur ou .
Vous pourrez peut-être simplement utiliser le sub de base R ici:
x <- "doremi g-k"
result <- sub("doremi\\s+([^-]+)-([^-]+)", "\\1_\\2", x)
result
[1] "g_k"
Juste une solution plus générique à la solution de @ RLave -
toreplace <- list("-" = "_", "doremi" = "")
gsubfn(paste(names(toreplace),collapse="|"), toreplace, x)
[1] " g_k"