Как заменить строки после подчеркивания в R - PullRequest
0 голосов
/ 31 августа 2018

Предположим, у меня есть строка 1:132464_A/T, в R, как я могу заменить частичную строку после подчеркивания _ другой строкой? А именно замените A/T на ABC в этом случае. Вывод будет 1:132464_ABC.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Альтернатива с sub и gsub: (Заменить все с XXXX_A / T на XXXX_ABC)

str <- "1:132464_A/T"
sub('\\_.*', '_ABC', str)

OR

gsub("\\_.*","_ABC",str)

Выход:

[1] "1:132464_ABC"
0 голосов
/ 31 августа 2018

С 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...