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

时间:2019-02-26 16:19:41

标签: r dataframe dplyr

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

仅仅玩转,我没有发现containsmatches辅助函数之间的任何区别。

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

谢谢

1 个答案:

答案 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并匹配这些模式