glob2rx()
函数将包含通配符的模式转换为等效的正则表达式。然后,您需要将这个正则表达式传递给R语言的某个模式匹配工具。
如果您想匹配通配符为*
的字符串"blue*"
,并且使用的不是正则表达式而是通配符,那么可以使用glob2rx()
函数将通配符模式转换为可用的正则表达式:
> glob2rx("blue*")
[1] "^blue"
返回的对象 是 正则表达式。
考虑你的数据:
x <- c('red','blue1','blue2', 'red2')
我们可以使用
grep()
或类似的工具进行模式匹配:
> grx <- glob2rx("blue*")
> grep(grx, x)
[1] 2 3
> grep(grx, x, value = TRUE)
[1] "blue1" "blue2"
> grepl(grx, x)
[1] FALSE TRUE TRUE FALSE
关于您发布的选择行问题
> a <- data.frame(x = c('red','blue1','blue2', 'red2'))
> with(a, a[grepl(grx, x), ])
[1] blue1 blue2
Levels: blue1 blue2 red red2
> with(a, a[grep(grx, x), ])
[1] blue1 blue2
Levels: blue1 blue2 red red2
或者通过subset()
方法:
> with(a, subset(a, subset = grepl(grx, x)))
x
2 blue1
3 blue2
希望这解释清楚了
grob2rx()
是做什么的以及如何使用它?
a <- data.frame( x = c('red','blue1','blue2', 'red2','lightblue','darkblue'))
如果您能帮忙,我将非常感激。 - Darwin PC?regex
。 - IRTFM