Оставьте только элементы списка, которые содержат строку в другом векторе (R) - PullRequest
1 голос
/ 16 октября 2019

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

Я пробовал фильтровать с помощью dplyr,% in% и т. Д.

Вот пример:

words <- c("find", "these", "words")

paragraph <- list(text1 = c("these", "words", "are", "helpful"),
              text2 = c("nothing", "to", "see", "here"),
              text3 = c("we", "can", "find", "one", "here"))

Я бы хотел закончить списком, включающим только text1 и text3.

Спасибо!

1 Ответ

0 голосов
/ 16 октября 2019

Один вариант - Filter из base R. Создайте логический vector с %in% оберткой с any

Filter(function(x) any(words %in% x), paragraph)
#$text1
#[1] "these"   "words"   "are"     "helpful"

#$text3
#[1] "we"   "can"  "find" "one"  "here"

Или используя sapply

paragraph[sapply(paragraph, function(x) any(words %in% x))]

Или используя lengths и intersect

paragraph[lengths(Map(intersect, list(words), paragraph)) > 0]

или с keep с purrr

library(purrr)
keep(paragraph, ~ any(words %in% .x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...