我有一个三个字符串的向量,我正在尝试编写一个命令,它将找到向量的哪些成员具有特定字母作为第二个字符.
举个例子,假设我有这个三字母蜇的向量...
example = c("AWA","WOO","AZW","WWP")
我可以使用grepl和glob2rx来查找W作为第一个或最后一个字符的字符串.
> grepl(glob2rx("W*"),example) [1] FALSE TRUE FALSE TRUE > grepl(glob2rx("*W"),example) [1] FALSE FALSE TRUE FALSE
但是,当我尝试使用它时,我得不到正确的结果 glob2rx(*W*)
> grepl(glob2rx("*W*"),example) [1] TRUE TRUE TRUE TRUE
我确信我对正则表达式的理解是缺乏的,但这似乎是一个非常简单的问题,我似乎无法找到解决方案.我真的很喜欢一些帮助!
为了将来参考,我也非常想知道我是否可以扩展到我有更长字符串的情况.假设我有5个字符长的字符串,我可以使用grepl以这种方式返回W是第三个字符的字符串吗?
我原以为这是正则表达式:
> grepl("^.W",example) [1] TRUE FALSE FALSE TRUE
如果您想要一个预先指定的特定职位,那么:
> grepl("^.{1}W",example) [1] TRUE FALSE FALSE TRUE
这将允许程序化计算:
pos= 2 n=pos-1 grepl(paste0("^.{",n,"}W"),example) [1] TRUE FALSE FALSE TRUE