在 R 中按多个条件拆分字符

Split character by multiple criteria in R

我有一个这样的向量:

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

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

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

重要提示1:注意有两种分隔符; + 和 *。 重要提示 2:请注意,有时我想得到的单词和分隔符之间有一个空格 space,而其他时候没有空格 spaces.

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"
)

您可以将 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"

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

> s <- c("variable1+variable2 + variable3*variable4+ variable5")

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