Я пытаюсь извлечь некоторые слова (названия стран) из строк. Струны список элементов, например,stringr текст извлечения на основе захвата и позиции
myList <- list(associations = c("Madeup speciesone: \r\n\t\t\t\t", "Foobarae foobar: Russia - 123,",
"Foobarus foobar France - 7007,Italy - 7007,Portugal - 6919,Ukraine - 42264,Russia - 7009,",
"Foobarus foobarbar",
"Foobaria foobariana f. sp. foobaricol Japan - 254, China - 256,"))
Я хочу, чтобы извлечь название страны, и, например, я мог бы сделать это:
Country_name <- lapply(myList, pattern = "China|France|Italy|Ukraine", str_extract_all)
country_list <- vector()
for(i in 1:length(Country_name[[1]])){
country_list[i] <- paste(Country_name[[1]][[i]], collapse = ",")
}
Но нужно было бы перечислить все возможные страны для него работать, что кажется трудоемким.
Есть ли способ использовать регулярные выражения для извлечения всех названий стран? Что-то вроде начинать с второго заглавного слова, а затем извлекать все страны до конца строки?
Использование чего-то типа lapply(myList, word, 3)
не совсем работает из-за переменной длины названий видов (например, Foobaria foobariana f. Sp. Foobaricol).
# desired output
country_list <- c("","Russia","France,Italy,Portugal,Ukraine,Russia","","Japan,China")
Пожалуйста, смотрите, если объект 'myList' является то, что вы хотели. В исходном посте не было части «list», и я редактировал, полагая, что это было необходимо. – nicola
С редактированием 'myList' вы можете попробовать:' lapply (str_extract_all (myList $ association, "(?! ^) [A-Z] \\ w +"), paste, collapse = ",") '. – nicola
@nicola myList edit - это то, что я намеревался. Ваш код работает. '\\ w +' является границей слов, правильно? и – nofunsally