在r中使用具有多个条目的grep查找匹配字符串
如果我有一个字符串向量:在r中使用具有多个条目的grep查找匹配字符串,r,R,如果我有一个字符串向量: dd <- c("sflxgrbfg_sprd_2011","sflxgrbfg_sprd2_2011","sflxgrbfg_sprd_2012") 如何做到这一点?我可以定义一个变量 toMatch <- c('2011','sprd) toMatch试试看 或者使用具有更多模式的示例 grep('(?<=sprd_).*(?=2011)|(?<=2011_).*(?=sprd)', dd1, value=TR
dd <- c("sflxgrbfg_sprd_2011","sflxgrbfg_sprd2_2011","sflxgrbfg_sprd_2012")
如何做到这一点?我可以定义一个变量
toMatch <- c('2011','sprd)
toMatch试试看
或者使用具有更多模式的示例
grep('(?<=sprd_).*(?=2011)|(?<=2011_).*(?=sprd)', dd1,
value=TRUE, perl=TRUE)
#[1] "sflxgrbfg_sprd_2011" "sflxlgrbfg_2011_sprd"
#[3] "sfxl_2011_14334_sprd" "sprd_124334xsff_2011_1423"
grep(”(?试试看
或者使用具有更多模式的示例
grep('(?<=sprd_).*(?=2011)|(?<=2011_).*(?=sprd)', dd1,
value=TRUE, perl=TRUE)
#[1] "sflxgrbfg_sprd_2011" "sflxlgrbfg_2011_sprd"
#[3] "sfxl_2011_14334_sprd" "sprd_124334xsff_2011_1423"
grep(”(?如果要查找多个模式,请尝试使用逻辑值而不是数字进行索引。这样可以创建一个“and”条件,其中仅提取具有两个模式的字符串
ifiles <- dd[grepl("2011",dd) & grepl("sprd_",dd)]
ifiles如果要查找多个模式,请尝试使用逻辑值而不是数字进行索引。这样可以创建一个“and”条件,其中仅提取具有两个模式的字符串
ifiles <- dd[grepl("2011",dd) & grepl("sprd_",dd)]
ifiles如果您想要一个可扩展的解决方案,您可以使用lappy
、Reduce
和intersect
来:
对于toMatch
中的每个表达式,在dd
中查找所有匹配项的索引
仅保留在toMatch
中为所有表达式找到的索引
dd如果您想要一个可扩展的解决方案,您可以使用lappy
、Reduce
和intersect
来:
对于toMatch
中的每个表达式,在dd
中查找所有匹配项的索引
仅保留在toMatch
中为所有表达式找到的索引
dd除了示例中指定的模式之外,您还有其他模式吗?是的,对不起,我应该更具体一些。我添加了一个注释。我基本上是指任意数量的字符串…您有没有示例中指定以外的模式?是的,对不起,我应该更具体一些。我添加了一个注释。我基本上是指任意数量的字符串。。。
dd <- c("sflxgrbfg_sprd_2011","sflxgrbfg_sprd2_2011","sflxgrbfg_sprd_2012",
"sflxlgrbfg_2011_sprd")
dd1 <- c(dd, "sfxl_2011_14334_sprd", "sprd_124334xsff_2011_1423")
ifiles <- dd[grepl("2011",dd) & grepl("sprd_",dd)]