Вы можете сделать это и с помощью strsplit, если вы не готовы к регулярному выражению.
do.call('rbind',lapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2))
Здесь strsplit разделит ваши данные с помощью «-», а затем мы выберем второй элемент из вывода strsplitиспользуя lapply
и [[
.Окончательный результат можно поместить в столбцовое представление, используя do.call
, здесь вы также можете выбрать unsplit
.Приведенный выше вывод представляет собой матрицу с символьными данными.Вы можете использовать data.frame, чтобы поместить его в нужную форму.
или лучше , как предложено @ thelatemail
sapply(strsplit(c("Subject 10010-001", "Subject 20010-002"),"-"),`[[`,2)
Здесь применяется та же логика, но онагораздо менее громоздким, так как вам не нужно ничего связывать, так как мы используем sapply
вместо lapply
.
Ваше существующее регулярное выражение кажется правильным , единственная проверкаЯ думаю, вы не должны использовать as.numeric
там, если вы хотите 00 спереди.