Мы можем попробовать использовать strsplit
вместе с sub
здесь для базовой опции R:
x <- "Department of Biophysical Chemistry, University of Braunschweig, Braunschweig, Germany; Consejo Superior de Investigaciones Científicas, CCHS, Madrid, Spain;"
terms <- sapply(strsplit(x, ";\\s*")[[1]], function(x) {
sub("^.*\\s+", "", x)
})
output <- paste0(terms, ";", collapse=" ")
output
[1] "Germany; Spain;"
Логика здесь заключается в том, чтобы сначала разбить строку, разделенную точкой с запятой, на шаблон ;\s*
,что приводит к списку, содержащему каждый отдел.Затем мы используем apply
для удаления всего, вплоть до последнего появления пробела.Наконец, мы вставляем свернуть, чтобы сгенерировать еще одну строку, разделенную точкой с запятой.
Примечание: я изменил имена выходного вектора только для демонстрационных целей, потому что R использовал полное описание отдела в качестве имени по умолчанию, что затруднялодисплей.