代码之家  ›  专栏  ›  技术社区  ›  user3357059

基于模式的R分句

  •  -1
  • user3357059  · 技术社区  · 7 年前

    我需要根据地址模式来划分一个句子。下面是我面临的问题的可复制样本。

     s <- c("Junipero Sierra Room 9001 coals ave","patio room2200 virginia beach ave")
    

    目前,这是我正在使用的

      gsub(".*([A-z]{1,}[0-9]{2,6})|.*([A-z]{1,} [0-9]{2,6})", "\\1",s)
    

    这就是我得到的,

     [1] " coals ave"               "m2200 virginia beach ave"
    

    但这就是我想要的

    [1] "9001 coals ave"         "2200 virginia beach ave"
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   janos slartidan    7 年前

    看起来你只是想切断一切 [0-9]{2,6} :

    > gsub(".*?([0-9]{2,6})", "\\1", s)
    [1] "9001 coals ave"          "2200 virginia beach ave"
    
        2
  •  0
  •   Ricardo Fernandes Campos    7 年前
    s <- c("Junipero Sierra Room 9001 coals ave","patio room2200 virginia beach ave")
    get.String=function(x){
      sx=unlist(strsplit(x,""))
      st=grep("[0-9]",sx)[1]
      x=substring(x,st,nchar(x))
      return(x)
    }
    sapply(s,get.String)