Вы также можете использовать tidyr::extract
, он работает только с фреймами данных.
tidyr::extract(data.frame(x =c("RMMI001", "CMCM009")),x, c("first", "second"), "([a-zA-Z]+)(\\d+)" )
Вывод:
# first second
#1 RMMI 001
#2 CMCM 009
Это извлечет оба алфавитаи числа в отдельных столбцах, если вы выберете «([a-zA-Z] +) \ d +» вместо «([a-zA-Z] +) (\ d +)».Затем он извлечет только первое совпадение, представленное в виде английских слов, как показано ниже.Обратите внимание, что здесь разница заключается в группе захвата, представленной круглыми скобками. Она используется здесь для захвата совпадения, в данном случае это слова и цифры в отдельных столбцах.
tidyr::extract(data.frame(x =c("RMMI001", "CMCM009")),x, c("first"), "([a-zA-Z]+)\\d+" )
# first
# 1 RMMI
# 2 CMCM