我决定花一些时间彻底学习dplyr。我刚刚遇到了该select()函数以及它附带的一些辅助函数。
仅通过玩耍,我就无法发现contains和matches帮助函数之间的任何区别。
有人可以举例说明如何将它们用于不同的目的吗?
谢谢,
区别在于matches可以使用正则表达式作为模式来匹配列名称,select而contains字串匹配还是全名匹配。它描述?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并匹配这些模式