У меня есть тиббл со списком слов для каждой строки. Я хочу создать новую переменную из функции, которая ищет ключевое слово и, если она находит ключевое слово, создает строку, состоящую из ключевого слова плюс-минус 3 слова.
Код ниже close , но вместо того, чтобы набирать все три слова до и после моего ключевого слова, он захватывает одно слово 3 вперед / назад.
df <- tibble(words = c("it", "was", "the", "best", "of", "times",
"it", "was", "the", "worst", "of", "times"))
df <- df %>% mutate(chunks = ifelse(words=="times",
paste(lag(words, 3),
words,
lead(words, 3), sep = " "),
NA))
Наиболее интуитивным решением было бы, если бы функция lag
могла сделать что-то вроде этого: lead(words, 1:3)
, но это не работает.
Очевидно, что я мог бы довольно быстро сделать это вручную (paste(lead(words,3), lead(words,2), lead(words,1),...lag(words,3)
), но в конечном итоге я действительно захочу уловить ключевое слово плюс-и-минус 50 слов - слишком много, чтобы ручной код.
Было бы идеально, если бы решение существовало в тививерсе, но любое решение было бы полезно. Любая помощь будет оценена.