Вот несколько альтернатив. Они не используют никаких пакетов, и все они работают, если x
- это одна строка или вектор строк (кроме (3), который предназначен только для одной строки - (3a) является векторной версией (3)).
Они используют этот вход:
x <- "Enrolment in secondary school, private school"
1) GSUB Это заменяет префикс и суффикс с пустой строкой в один присест:
gsub("Enrolment in |,.*", "", x)
## [1] "secondary school"
2) суб Это делает то же, но в отдельных случаях sub
выписки:
sub(",.*", "", sub("Enrolment in ", "", x))
## [1] "secondary school"
2а) к югу/подстрока Поскольку мы знаем длину префикса мы могли бы заменить один из sub
звонков с substring
:
sub(",.*", "", substring(x, 14))
## [1] "secondary school"
3) strsplit Хотя один обычно не используют этот раствор один можно использовать strsplit, как показано:
strsplit(x, "Enrolment in |,.*")[[1]][2]
## [1] "secondary school"
3a) для обобщения (3) к вектору строк:
sapply(strsplit(x, "Enrolment in |,.*"), "[", 2)
## [1] "secondary school"
4) read.table Это заменяет префикс с запятой, а затем считывает его в качестве разделенных запятой полей с помощью read.table
отбирает второй столбец:
read.table(text = sub("Enrolment in ", ",", x), sep = ",", as.is = TRUE)[[2]]
## [1] "secondary school"
'stringr :: str_replace (str, «Регистрация в (. +),. +", "\\ 1") ', вероятно, сделает трюк.Скобки определяют группировку, на которую можно ссылаться позже по порядку (т. Е. К набору «n» th скобок можно ссылаться на '\\ n'). Очевидно, что это не очень устойчивое регулярное выражение, но оно проходит ваш тестовый пример. –
Спасибо Akhil, но это выражение удаляет только часть «Зачисление в», но не «», и все после нее. – cimentadaj
Вы включили ',. +' После закрытой скобки? Прекрасно работает для меня –