R: Как найти шаблоны grep в строке в том же порядке, что и шаблон - PullRequest
1 голос
/ 26 апреля 2020

У меня есть набор строк и набор шаблонов, которые я хочу посмотреть в строках.

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

Воспроизводимый код:

my_strings <- c("I see trees of green", 
               "red roses too",
               "I see them blossom",
               "for me and you") 

my_patterns <- "blossom|green|red"

grep (my_patterns, my_strings, value = TRUE)

Возвращает:

[1] "Я вижу деревья зеленых" "красные розы тоже "" Я вижу, как они расцветают "

Я не хочу, чтобы он это возвращал, вместо этого я хочу, чтобы он возвратил:

[1]" Я вижу их Blossom "" Я вижу зеленые деревья "" Красные розы тоже "

Так как в этом порядке они упоминаются в переменной my_patterns.

Как мне этого добиться эффективно ?

Заранее спасибо

1 Ответ

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

Это не работает, потому что вы не определяете паттерны , а один паттерн, который "цветет ИЛИ зеленый ИЛИ красный". Затем ваш grep проходит через строки и возвращает каждое значение в том же порядке, где встречается с одним из 3 слов.

Вместо этого вам нужно определить 3 шаблона и l oop для них Например:

my_strings <- c("I see trees of green", 
               "red roses too",
               "I see them blossom",
               "for me and you") 
my_patterns <- c("blosso","green","red")
sapply(my_patterns, function(x) grep(x, my_strings, value = TRUE))

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...