Разница между contains () и match () для select () в dplyr - PullRequest
0 голосов
/ 26 февраля 2019

Я решил потратить некоторое время на тщательное изучение dplyr.Я только что натолкнулся на функцию select() и некоторые вспомогательные функции, которые поставляются с ней.

Просто играя, я не смог найти никакой разницы между вспомогательными функциями contains и matches.

Не могли бы вы привести пример, как их можно использовать для различных целей??

Спасибо,

1 Ответ

0 голосов
/ 26 февраля 2019

Разница в том, что matches может принимать регулярное выражение в качестве шаблона для сопоставления имен столбцов, а select, в то время как contains выполняет буквальное совпадение подстроки или полного имени.Он описывается в ?select_helpers как

contains (): содержит буквенную строку.

match (): соответствует регулярному выражению.

Рассмотрим простой пример, в котором мы хотим выбрать столбцы с подстрокой 'col'

df1 <- data.frame(colnm = 1:5, col1 = 24, col2 = 46)
df1 %>% 
    select(contains("col"))
#  colnm col1 col2
#1     1   24   46
#2     2   24   46
#3     3   24   46
#4     4   24   46
#5     5   24   46

Здесь он совпадает с 'col' буквально в именах столбцов и выбирает их.Если мы изменим критерии сопоставления, чтобы они соответствовали 'col', за которым следуют одна или несколько цифр (\\d+) с регулярным выражением

df1 %>% 
   select(contains("col\\d+"))
#data frame with 0 columns and 5 rows

, если происходит сбой, поскольку он ищет подстроку имени столбца "col\\d+"

df1 %>%
    select(matches("col\\d+")) 
# col1 col2
#1   24   46
#2   24   46
#3   24   46
#4   24   46
#5   24   46

, тогда как matches берут regex и соответствуют этим шаблонам

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