I want to replace the strings \"aa\" and \"aaa\" in the dataframe below with\"\"
data = data.frame(attr = c(1:4), type1=c(         
        data <- apply(data,2,function(x) gsub("aa|aaa","",x))
     attr type1 type2
[1,] "1"  ""    ""   
[2,] "2"  "b"   ""   
[3,] "3"  ""    ""   
[4,] "4"  "b"   ""   
You could alternatively use
data <- apply(data,2,function(x) gsub("a{2,3}","",x))
You could just set option fixed = FALSE and delete all the a's.
data <- as.data.frame(apply(data, 2, function(x) gsub("a",'', x, fixed = FALSE)))
data
#   attr type1 type2
# 1    1            
# 2    2     b      
# 3    3            
# 4    4     b  
 dat[2:3] <- lapply(dat[2:3], gsub, pattern = '[a]{2,}', replacement = '')
The result:
> dat
  attr type1 type2
1    1            
2    2     b      
3    3            
4    4     b      
Data used:
dat <- data.frame(attr = c(1:4), type1 = c('aa','b'), type2 = c("aaa", "aa"))
library(dplyr)
data2 = data %>%
  mutate(type1 = recode(type1, "aa" = "", "aaa" = ""),
         type2 = recode(type2, "aa" = "", "aaa" = ""))
attr type1 type2
1    1            
2    2     b      
3    3            
4    4     b      
if you wanna generalize, taking from @denis answer:
data2 = data %>%
  mutate_all(function(x) gsub("aa|aaa","",x))