получить следующие два слова из строки в R - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу получить следующие два слова после нахождения слов. Например: tp_functional_location <- c ("яблоко", "оранжевый) </p>

df <- as.data.frame(c("This is an apple and I love apples","I am going to buy orange but I can buy kiwis as well"))
names(df)[1]<-'title'

tp_pattern <- c("apple","orange")

pattern_fl <- paste0('(?<=', tp_pattern, '\\s)\\w+', collapse = "|")

df$new_word <- str_extract(df$title, pattern_fl)

Я получил следующее слово, но хотел бы получить следующие два слова. Ожидаемый результат: и я, но я

Пожалуйста, руководство.

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

Вы можете создать шаблон следующим образом:

pattern_fl <- paste0("(?<=(",paste0(tp_pattern, collapse = "|"), ")\\s)\\w+\\s\\w+")
stringr::str_extract(df$title, pattern_fl)

#[1] "and I" "but I"
1 голос
/ 22 апреля 2020

Как насчет этого, используя str_extract из пакета stringr:

str_extract(df$title, ("(?<=apple |orange )\\b\\w+\\b\\s\\b\\w+\\b"))

[1] "and I" "but I"

Объяснение:

(?<=apple |orange ), если вы видите apple или orange каждый, за которым следует пробел слева ...

\\b\\w+\\b\\s\\b\\w+\\b ... соответствует следующим двум словам (идентифицируемым по границам слова \\b)

0 голосов
/ 22 апреля 2020

Мы также можем создать шаблон с str_c

library(stringr)
pattern_fl <- str_c("(?<=(",str_c(tp_pattern, collapse = "|"), ")\\s)\\w+\\s\\w+")
stringr::str_extract(df$title, pattern_fl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...