En génomique, nous devons souvent travailler avec de nombreuses chaînes de noms de gènes séparés par des points-virgules. Je veux faire une correspondance de motif (trouver un nom de gène spécifique dans une chaîne), puis supprimer cela de la chaîne. J'ai également besoin d'enlever tout point-virgule avant ou après le nom du gène. Cet exemple de jouet illustre le problème.Supprimer le motif dans la chaîne et le point-virgule avant et/ou après (R)
s <- c("a;b;x", "a;x;b", "x;b", "x")
library(stringr)
str_replace(s, "x", "")
#[1] "a;b;" "a;;b" ";b" ""
La sortie souhaitée doit être.
#[1] "a;b" "a;b" "b" ""
que je pouvais faire pour ltrage ;x
et x;
aussi bien et qui me donnerait la sortie; mais ce ne serait pas très efficace. Nous pouvons également utiliser gsub
ou le paquet stringi
et ce serait bien aussi.
Merci. Mais le premier élément a encore un extra; à la fin. "un B;" devrait être "a; b". – milan
Oh. Oui c'est vrai. Juste mis à jour la réponse. – Psidom