Ich versuche, eine Datenrahmen-String-Substitution in R durchzuführen. Ich muss alle Wörter finden, denen '@' vorausgeht (ohne Leerzeichen, z. B. @word) und ändern ' zum '!' (z.B. von @word zu! word). Gleichzeitig bleiben die anderen Instanzen von '@' (z. B. @ oder @@ oder @ [@]) intakt. Zum Beispiel ist dies mein ursprünglicher Datenrahmen (zu ändern: @dEF, @jkl, @stu):Ersatzwort mit gleichem Wort ohne initial @ in R
> df = data.frame(number = 1:4, text = c('abc @def ghi', '@jkl @ mno', '@[@] pqr @stu', 'vwx @@@ yz'))
> df
number text
1 1 abc @def ghi
2 2 @jkl @ mno
3 3 @[@] pqr @stu
4 4 vwx @@@ yz
Und das ist, was ich brauche es aussehen:
> df_result = data.frame(number = 1:4, text = c('abc !def ghi', '!jkl @ mno', '@[@] pqr !stu', 'vwx @@@ yz'))
> df_result
number text
1 1 abc !def ghi
2 2 !jkl @ mno
3 3 @[@] pqr !stu
4 4 vwx @@@ yz
ich versucht habe, mit
> gsub('@.+[a-z] ', '!', df$text)
[1] "abc !ghi" "[email protected] mno" "[email protected]" "vwx @@@ yz"
Aber das Ergebnis ist nicht das gewünschte. Jede Hilfe wird sehr geschätzt.
Vielen Dank.
Hallo Rich Scriven, vielen Dank für die Lösung und eine sehr detaillierte Erklärung der Logik dahinter. Es funktioniert perfekt. Ich wünsche ihnen einen wunderbaren Tag. – user3550647