我想在R中做一个数据帧字符串替换。我需要找到所有以'@'开头的单词(没有空格,例如@word)并且改变'@ '为'!' (例如从@word到!字)。同时,它会保留“@”的其他实例(例如@或@@或@ [@])。例如,这是我原来的数据框(改:@def,@jkl,@stu):在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
而这正是我需要它看起来像:
> 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"
但结果不是理想的。任何帮助深表感谢。
谢谢。
嗨Rich Scriven,非常感谢你的解决方案和背后的逻辑非常详细的解释。它完美的作品。祝你有美好的一天。 – user3550647