【问题标题】:Split character by multiple criteria in R在R中按多个条件拆分字符
【发布时间】:2021-09-01 13:51:30
【问题描述】:

我有一个这样的向量:

c("variable1+variable2 + variable3*variable4+ variable5")

我想将他的字符串拆分成一个向量,例如:

c("variable1", "variable2", "variable3", "variable4", "variable5")

重要1:注意有两种分隔符; + 和 *。 重要 2:请注意,有时我想要获取的单词和分隔符之间有空格,而其他时候则没有空格。

【问题讨论】:

    标签: r split character criteria


    【解决方案1】:

    base R,我们可以使用strsplit

    out <- strsplit("variable1+variable2 + variable3*variable4+ variable5", 
              "\\s*[*+]\\s*")[[1]]
    

    -输出

    out
    [1] "variable1" "variable2" "variable3" "variable4" "variable5"
    

    结构是

    dput(out)
    c("variable1", "variable2", "variable3", "variable4", "variable5"
    )
    

    【讨论】:

    • 此解决方案适用于“+”分隔符,但不适用于“”分隔符。我试过这个:scan(text = c("variable1+variable2 + variable3*variable4+ variable5"), what = "", sep = c("+", ""), strip.white = TRUE, quiet = TRUE) 但仍然不起作用。
    • @Miquel 我只在我发布scan 后才注意到你的多个sep。更改为strsplit。请检查
    【解决方案2】:

    你可以使用stringr

    library(stringr)
    a <- c("variable1+variable2 + variable3*variable4+ variable5")
    
    str_split(str_squish((str_replace_all(a, regex("\\W+"), " "))), " ")
    

    输出:

    [1] "variable1" "variable2" "variable3" "variable4" "variable5"
    

    【讨论】:

      【解决方案3】:

      另一个使用 strsplit + trimws 的基本 R 选项

      > s <- c("variable1+variable2 + variable3*variable4+ variable5")
      
      > trimws(unlist(strsplit(s, "\\*|\\+", perl = TRUE)))
      [1] "variable1" "variable2" "variable3" "variable4" "variable5"
      

      【讨论】:

        猜你喜欢
        • 2015-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多