Let’s suppose I have this situation
data = data.frame('A' = c('A_A_', 'B_B_'))
A_A_ where I would like to remove the final and replace the central underscore. What can I do to save the following two steps?
data %>%
mutate(A = sub("_$","", A)) %>%
mutate(A = sub("_","->", A))
Thanks
>Solution :
You could use sub() with capture groups:
data$A <- sub("([^_]+)_([^_]+)_", "\\1->\\2", data$A)
The regex pattern used here says to match:
([^_]+)match and capture in\1the first term_match the first underscore([^_]+)match and capture in\2the second term_match the final underscore
Then we splice together the two segments separated by ->.