С sub
, соответствует _
, за которым следуют символы (.*
), замените его на _
и строку для замены 'BC'
sub("_A.*", "_ABC", str1)
#[1] "1:132464_ABC"
Или, если мы также изменили букву «А», то захватить как группу ((_.)
- подчеркивание, за которым следует любой символ .
), за которым следуют другие символы (.*
) и заменить на обратную ссылку (\\1
) захваченной группы вместе со строкой замены
sub("(_.).*", "\\1BC", str1)
#[1] "1:132464_ABC"
Или с помощью регулярных выражений для поиска символа после _
и замены на обратную ссылку захваченной группы
sub("(?<=_)(.).*", "\\1BC", str1, perl = TRUE)
#[1] "1:132464_ABC"
или используя str_replace
library(stringr)
str_replace(str1, "_A.*", "_ABC")
#[1] "1:132464_ABC"
Или используя stri_replace
из stringi
library(stringi)
stri_replace(str1, regex = "_A.*", "_ABC")
#[1] "1:132464_ABC"
Или разделить строку на _
, а затем paste
после извлечения первого элемента
paste0(strsplit(str1, "_")[[1]][1], "_ABC")
#[1] "1:132464_ABC"
данные
str1 <- "1:132464_A/T"