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"