Функция grep() в R — сопоставление с шаблоном и поиск

R 语言实例Примеры на языке R

Функция grep() в R используется для поиска в символьном векторе позиций или значений, соответствующих заданному шаблону.

grepl() — это её логическая версия, возвращающая TRUE/FALSE. Обе поддерживают регулярные выражения.

Синтаксис функции grep() выглядит следующим образом:

grep(pattern, x, value = FALSE, ignore.case = FALSE)
grepl(pattern, x, ignore.case = FALSE)

Описание параметра:

  • patternШаблон для сопоставления (поддерживает регулярные выражения).

  • xВходной символьный вектор.

  • valueВозвращать ли совпавшее значение (TRUE) вместо только индекса (FALSE). По умолчанию — FALSE.

  • ignore.caseИгнорировать ли регистр.

Пример

fruits <- c("яблоко", "банан", "апельсин", "grape", "pineapple", "mango")

# grep: вернуть индексы, содержащие "ap"
print("Индексы, содержащие 'ap':")
print(grep("ap", fruits))

# grep с value: возвращает совпавшие значения
print("Фрукты, содержащие 'ap':")
print(grep("ap", fruits, value = TRUE))

# grepl: возвращает логический вектор
print("Содержит ли 'ap':")
print(grepl("ap", fruits))

Выполнение приведённого выше кода даёт следующий результат:

[1] "包含 'ap' 的索引:"
[1] 1 4 5
[1] "包含 'ap' 的水果:"
[1] "apple"     "grape"     "pineapple"
[1] "是否包含 'ap':"
[1]  TRUE FALSE FALSE  TRUE  TRUE FALSE

grepl() в сочетании с логической индексацией может фильтровать строки в таблице данных:

Пример

# Данные пользователей с адресами электронной почты
df <- data.frame(
Name= c("Zhang San", "Li Si", "Wang Wu", "Чжао Лю"),
Email= c("[email protected]", "[email protected]",
           "[email protected]", "[email protected]"),
  stringsAsFactors = FALSE
)

# Фильтровать пользователей с адресами электронной почты, содержащими example
example_users <- df[grepl("example", df$Email), ]
print("пример пользователей электронной почты:")
print(example_users)

Выполнение приведённого выше кода даёт следующий результат:

[1] "example 邮箱的用户:"
  姓名              邮箱
1 张三 [email protected]
3 王五  [email protected]

R 语言实例Примеры на языке R

Другие расширения