【问题标题】:Splitting a string based on a vector of strings in R根据R中的字符串向量拆分字符串
【发布时间】:2017-06-09 19:11:38
【问题描述】:

我有以下字符串和向量:

temp = "EarthMars Venus & Saturn PlanetsJupiter"

searchTerms = c("Earth", "Jupiter", "Mars", "Venus & Saturn Planets", "Neptune")

我想根据“searchTerms”中的字符串拆分“temp”,以便得到以下信息:

result = c("Earth", "Mars", "Venus & Saturn Planets", "Jupiter") 

感谢您的帮助!

【问题讨论】:

    标签: r split strsplit


    【解决方案1】:

    使用stringr 包,您可以:

    library(stringr)
    result = unlist(str_extract_all(temp,searchTerms))
    
    [1] "Earth"          "Jupiter"         "Mars"           "Venus & Saturn Planets"
    

    【讨论】:

      【解决方案2】:

      与这篇文章 (R split on delimiter (split) keep the delimiter (split)) 类似的一个选项是:

      searchStr <- paste0(searchTerms, collapse = "|")
      unlist(strsplit(temp, paste0("(?<=",searchStr,")"), perl = T))
      
      [1] "Earth" "Mars"  " Venus & Saturn Planets" "Jupiter"   
      

      【讨论】:

        【解决方案3】:

        另一种只有基本功能的单行选项:

        result &lt;- unlist(lapply(searchTerms, function(x) regmatches(temp,regexpr(x,temp))))

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-01
          • 1970-01-01
          • 2018-05-12
          • 1970-01-01
          • 1970-01-01
          • 2019-11-16
          相关资源
          最近更新 更多