J'espère que ceci est suffisamment différent, les messages antérieurs pour justifier son propre thread; Malheureusement, ils ne m'ont pas aidé. Je pense que mon intérêt pour le remplacement partiel, plus l'utilisation d'un caractère générique est donc unique, mais excuses si je n'ai simplement pas cherché ou lu assez attentivement!R gsub remplacement des caractères génériques
Supposons que j'ai la chaîne suivante:
str <- c("FOO_1", "FOO_2", "BAR_1", "BAR_2")
Je voudrais remplacer le 1
à la fin de FOO_1
avec autre chose, dire A
. J'ai essayé de le faire avec les deux
gsub("[^F.*](1)$", "\\_A", str)
et
gsub("^F.*(1)$", "\\_BLAH", str)
mais clairement ni d'entre eux travaillaient pour remplacer seulement1
, laissant le reste de FOO_
intact, tout en ne modifiant pas BAR_1
. J'ai une solution bête au problème qui implique simplement une ligne de grep()
et une ligne de gsub()
, mais je me déteste si c'est ce que je m'installe.
Quelle est la règle ici? Il suffit de remplacer '_1' à la fin de la chaîne? 'sub (" _ 1 $ "," _A ", x)'? Voir [cette démo] (https://ideone.com/mKj7Uh) - c'est ce que vous cherchez? –
Malheureusement, non; Je ne veux remplacer que les variables _starting_ avec FOO et _ending_ avec '1'. Ainsi, par exemple, si l'approche change 'BAR_1' en' BAR_A', c'est un échec. J'essayais juste de fournir un exemple de travail minimal, mais dans le cas actuel, il y a plusieurs permutations de la même variable. Par exemple., 'FOO_A_1',' FOO_B_1', et ainsi de suite; Je voudrais capturer tout '^ FOO. * 1 $' (désolé si cela est indiqué incorrectement). – ironchefsakai
['sub ("^(FOO. *) _ 1 $ "," \\ 1_A ", str)'] (https://ideone.com/Nxqsi9)? –