dplyr中select()的contains()和MATCHS()之间的差异

dplyr中select()的contains()和MATCHS()之间的差异,r,dataframe,dplyr,R,Dataframe,Dplyr,我决定花一些时间彻底学习dplyr。我刚刚遇到了select()函数及其附带的一些辅助函数 仅仅是玩弄一下,我没有发现包含的和匹配的辅助函数之间有任何区别 有人能举一个例子说明如何将它们用于不同的目的吗 谢谢,不同之处在于,匹配可以使用正则表达式作为模式来匹配列名,选择,而包含进行子字符串或全名匹配的文字匹配。它在?选择帮助程序中描述为 contains():包含文字字符串 matches():匹配正则表达式 考虑一个简单的示例,其中我们希望选择具有子字符串“col”的列 df1 <- d

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

仅仅是玩弄一下,我没有发现
包含的
匹配的
辅助函数之间有任何区别

有人能举一个例子说明如何将它们用于不同的目的吗


谢谢,

不同之处在于,
匹配
可以使用正则表达式作为模式来匹配列名,
选择
,而
包含
进行子字符串或全名匹配的文字匹配。它在
?选择帮助程序
中描述为

contains():包含文字字符串

matches():匹配正则表达式

考虑一个简单的示例,其中我们希望选择具有子字符串“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\\d+”


匹配
采用
正则表达式
并匹配那些模式

包含
文本字符串
匹配
正则表达式,即
匹配
可以采用元字符,如
$
^
在正则表达式中使用,而
包含
从字面上匹配子字符串
df1 %>% 
   select(contains("col\\d+"))
#data frame with 0 columns and 5 rows
df1 %>%
    select(matches("col\\d+")) 
# col1 col2
#1   24   46
#2   24   46
#3   24   46
#4   24   46
#5   24   46