str_detect中的正则表达式?
我有像str_detect中的正则表达式?,r,regex,pattern-matching,R,Regex,Pattern Matching,我有像c1c5、c5c1、c4c3… 我想检索所有以c4和c5开头或结尾的colname 我已尝试使用以下方法: str_detect(colnames(df), "c5c\\d+") str_detect(colnames(df), "c4c\\d+") str_detect(colnames(df), "c\\d+c4") str_detect(colnames(df), "c\\d+c5") 有没有办法把它组合成一个表达式?请告知。尝试使用sapply: colnames(df)[
c1c5、c5c1、c4c3…
我想检索所有以c4
和c5
开头或结尾的colname
我已尝试使用以下方法:
str_detect(colnames(df), "c5c\\d+")
str_detect(colnames(df), "c4c\\d+")
str_detect(colnames(df), "c\\d+c4")
str_detect(colnames(df), "c\\d+c5")
有没有办法把它组合成一个表达式?请告知。尝试使用
sapply
:
colnames(df)[sapply(X = colnames(df), FUN = function (X) substr(X, 1, 2) %in% c("c4", "c5") | substr(X, 3, 4) %in% c("c4", "c5"))]
这样,您就可以让colname以“c4”或“c5”开头或结尾
如果您有长度大于4的colname,或者您想使用与“c4”或“c5”不同的内容,您可以使用以下内容对其进行概括:
patterns <- c("c4", "c5") #you can change it
colnames(df)[sapply(X = colnames(df), FUN = function (X) substr(X, 1, 2) %in% patterns | substr(X, nchar(X) - 1, nchar(X)) %in% patterns )]
模式您可以使用
str_detect(colnames(df), "^c[54]|c[54]$")
或者,以R为基数:
grep("^c[45]|c[45]$", colnames(df))
正则表达式是^c[45]|c[45]$
:
^
-字符串的开头
c
-ac
[45]
-4
或5
|
-或
c[45]
-c4
或c5
$
-。。。在字符串的末尾
你也可以用这种方法。即使字符串中有多个单词,它也可以工作
str_detect(colnames(df), "(\bc[45])|(c[45]\b)")
stru detect(colnames(df),“^c[54]| c[54]$”
/grep(^c[45]| c[45]$”,colnames(df))
?@WiktorStribiżew非常感谢这正是我要找的!请分享一个答案,这样我就可以接受了。@Davidernburg非常感谢另一个选择,我认为regex更简单、更快。如果你认为我错了,请纠正我。@stevesgrep
也使用正则表达式。这只是一个从基函数开始的函数R@DavidArenburg我知道我指的是Wiktor提供的解决方案。