Используйте grepl для поиска совпадений для любой строки символов в векторе символов R

  1. Используйте функции grep или grepl для поиска совпадений с образцом в R
  2. Используйте grepl для сопоставления любых символьных строк в векторе символов R

В этой статье мы обсудим несколько методов использования grepl для поиска совпадений для любой строки символов в векторе символов R.

Используйте функции grep или grepl для поиска совпадений с образцом в R

grep используется для сопоставления с образцом в векторе символов. Он принимает аргумент шаблона как регулярное выражение, которое соответствующим образом сопоставляется функцией. grep по умолчанию возвращает векторы индексов для совпадающих элементов, но он также может возвращать вектор символов совпадающих элементов, если пользователь присваивает TRUE параметру value. С другой стороны, grepl возвращает вектор логических значений, указывающих, соответствует ли соответствующий элемент шаблону или нет. В следующем примере демонстрируется соответствие букв алфавита любой букве алфавита, и мы получаем ожидаемый результат соответствия всех элементов.

grep("[a-z]", letters)
grep("[a-z]", letters, value = TRUE)
grepl("[a-z]", letters)
> grep("[a-z]", letters)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

> grep("[a-z]", letters, value = TRUE)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v"
[23] "w" "x" "y" "z"

> grepl("[a-z]", letters)
 [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[18] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Используйте grepl для сопоставления любых символьных строк в векторе символов R

Функция grepl может соответствовать любым логическим перестановкам строк с соответствующим шаблоном. Обратите внимание, что grepl по умолчанию не соответствует разным регистрам. В следующем фрагменте кода показана первая функция, которая соответствует каждой строке, в которой находится The. С другой стороны, следующий вызов grepl соответствует словам, содержащим The или the.

words <- c("The", "licenses", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- grepl("The", words)
i
i <- grepl("The|the", words)
i
[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

В качестве альтернативы мы можем использовать функцию if...else для вывода строковых значений для каждого совпадающего или несогласованного элемента в векторе символов, как показано в следующем примере кода. Обратите внимание, что второй вызов использует сопоставление с любой строкой, содержащей символ из диапазона e-h.

words <- c("The", "Them", "for", "most", "software", "are",
         "to", "share", "and", "change", "it.",
         "", "By", "contrast,", "the", "GNU", "General", "Public", "License",
         "free", "for", "all", "its", "users")

i <- ifelse(grepl("The|the", words), "Tr", "Fa")
i <- ifelse(grepl("[e-h]", words), "Tr", "Fa")
i
[1] "Tr" "Tr" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Fa"
[18] "Fa" "Fa" "Fa" "Fa" "Fa" "Fa" "Fa"

[1] "Tr" "Tr" "Tr" "Fa" "Tr" "Tr" "Fa" "Tr" "Fa" "Tr" "Fa" "Fa" "Fa" "Fa" "Tr" "Fa" "Tr"
[18] "Fa" "Tr" "Tr" "Tr" "Fa" "Fa" "Tr"