Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中使用具有多个条目的grep查找匹配字符串_R - Fatal编程技术网

在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)]