如何使用正则表达式选择r中数据框的列?

如何使用正则表达式选择r中数据框的列?,r,regex,dataframe,select,R,Regex,Dataframe,Select,我有下面的数据框 D <- data.frame(A123.case.vs.B123.Cntl._FC = 1:4, B123.case.vs.B123.Cntl._FC = 0:3, A123.case.vs.D123.Cntl._FC= 2:5, FC = 1:4, A123.case= 0:3, B123.cntrl = 0:3) 你知道我的问题在哪里吗 谢谢下面的正则表达式满足问题的要求 library(dplyr) D %>% select(matches('case\

我有下面的数据框

D <- data.frame(A123.case.vs.B123.Cntl._FC = 1:4, B123.case.vs.B123.Cntl._FC = 0:3, A123.case.vs.D123.Cntl._FC= 2:5, FC = 1:4, A123.case= 0:3, B123.cntrl = 0:3)
你知道我的问题在哪里吗


谢谢

下面的正则表达式满足问题的要求

library(dplyr)

D %>% select(matches('case\\.vs\\.[[:alpha:]][[:digit:]]+'))
#  A123.case.vs.B123.Cntl._FC B123.case.vs.B123.Cntl._FC A123.case.vs.D123.Cntl._FC
#1                          1                          0                          2
#2                          2                          1                          3
#3                          3                          2                          4
#4                          4                          3                          5

grep(“case.vs.[a-z]*[0-9].cntl”,names(D))
返回0。因此,问题似乎是您的正则表达式模式。问题是,如果您选中
?请选择\u helpers
包含-包含一个文本字符串。
这里,您包含了文本和正则表达式,它们将不起作用,因为它将查找
[a-z]*
作为文本模式谢谢。我也想在我的表达中加上“cntl”。我正在使用此命令匹配(“case\\.vs\\.[[:alpha:][[:digit:].cntl\\+”),但它不起作用。请尝试“case\\\.vs\\.[:alpha:][[:digit:]+\\.cntl”。“+”表示前面的一个或多个术语,即本例中的一个或多个数字。您还需要在“.”前面使用“\\”,以便按字面意思处理它,
library(dplyr)

D %>% select(matches('case\\.vs\\.[[:alpha:]][[:digit:]]+'))
#  A123.case.vs.B123.Cntl._FC B123.case.vs.B123.Cntl._FC A123.case.vs.D123.Cntl._FC
#1                          1                          0                          2
#2                          2                          1                          3
#3                          3                          2                          4
#4                          4                          3                          5