0
votes

Comment supprimer une sous-chaîne à partir de noms de variables?

J'ai les noms de variables suivants:

clean_vars <- c("var1.caps","var2","var3.tree.","var4.caps")

Je dois nettoyer ces noms pour obtenir le résultat suivant:

vars <- c("var1.caps(12, For]","var2(5,For]","var3.tree.(15, For]","var4.caps")

Donc, en gros, j'aimerais supprimer (.. .

Y a-t-il un moyen automatisé de le faire dans R?

J'essayais de adapter str_replace (vars, pattern, "") , mais je ne sais pas comment rendre pattern flexible car il pourrait avoir des valeurs différentes entre ( et ] .

r

0 commentaires

4 Réponses :


1
votes
gsub("\\(.*\\]","",vars)
[1] "var1.caps"  "var2"       "var3.tree." "var4.caps"

0 commentaires

1
votes

Utilisation de stringr et purrr:

stringr::str_split(vars, "\\(") %>% purrr::map(., 1) %>% unlist()
[1] "var1.caps"  "var2"       "var3.tree." "var4.caps" 


0 commentaires

0
votes

Une autre option d'utilisation de gsub

> gsub("(?<=)\\(.*\\]","\\1",vars,perl = T)
[1] "var1.caps"  "var2"       "var3.tree."
[4] "var4.caps


0 commentaires

0
votes

Éliminer

  • le premier ( (dans l'expression régulière \\ () dans la chaîne
  • et tout ce qui vient après (. + ).

Remplacez-le par rien ( "" ).

sub("\\(.+", "", vars)

# [1] "var1.caps"  "var2"       "var3.tree." "var4.caps" 


0 commentaires