Rでデータフレーム文字列置換をしようとしています。@(スペースなし、例えば@word)で始まるすべての単語を探し、 '@ ' ために '!' (例えば、@wordから!wordへ)。同時に、それは '@'の他のインスタンスをそのまま残す(例えば、@または@@または@ [@])。たとえば、これは私のオリジナルデータフレーム(:@def、@jkl、@stu変更する):ある先頭に@を付けずに同じ単語を置き換えてください。
> 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
そして、これは私が見えるように、それを必要とするものである:
> 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
私が試してみました
> gsub('@.+[a-z] ', '!', df$text)
[1] "abc !ghi" "[email protected] mno" "[email protected]" "vwx @@@ yz"
を持つ。しかし、結果は、望ましいものではありません。どんな助けも大歓迎です。
ありがとうございます。およそ
gsub("(^|)@(\\w)", "\\1!\\2", df$text)
# [1] "abc !def ghi" "!jkl @ mno" "@[@] pqr !stu" "vwx @@@ yz"
これは、文字列の先頭に@
シンボルと一致する、またはスペースの後にどのように
こんにちはリッチスクリィン、その背後にあるロジックの解説と非常に詳細な説明に感謝します。それは完全に動作します。すてきな一日を。 – user3550647