dplyr中select()的contains()和matchs()之间的区别

h3a*_*b74 2 r dataframe dplyr

我决定花一些时间彻底学习dplyr。我刚刚遇到了该select()函数以及它附带的一些辅助函数。

仅通过玩耍,我就无法发现containsmatches帮助函数之间的任何区别。

有人可以举例说明如何将它们用于不同的目的吗?

谢谢,

akr*_*run 5

区别在于matches可以使用正则表达式作为模式来匹配列名称,selectcontains字串匹配还是全名匹配。它描述?select_helpers

contains():包含文字字符串。

matchs():匹配一个正则表达式。

考虑一个简单的示例,我们要选择具有子字符串“ 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
Run Code Online (Sandbox Code Playgroud)

在这里,它与列名称中的'col'字面上匹配,然后选择它们。如果我们更改匹配条件以匹配“ col”,后跟一个或多个数字(\\d+)和正则表达式

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

如果失败,因为它正在寻找列名子字符串 "col\\d+"

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

matches采用regex并匹配这些模式

  • 谢谢 !真的为我清除了它。 (3认同)