我决定花一些时间彻底学习dplyr。我刚刚遇到了select()
函数和它附带的一些辅助函数。
仅仅玩转,我没有发现contains
和matches
辅助函数之间的任何区别。
有人可以举例说明如何将其用于不同目的吗?
谢谢
答案 0 :(得分:3)
区别在于matches
可以使用正则表达式作为模式来匹配列名,而select
可以使用正则表达式作为子串或全名匹配的字面匹配。 contains
中将其描述为
contains():包含文字字符串。
matches():匹配正则表达式。
考虑一个简单的示例,我们要选择具有子字符串'col'的列
?select_helpers
在这里,它与列名称中的'col'完全匹配,然后选择它们。如果我们更改匹配条件,以使'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
)与正则表达式
\\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
并匹配这些模式