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))