从向量中提取字符元素

Sim*_*mel 2 regex string r character

我有一组字符向量:

a <- "bmi + ch | study"
b <- "bmi * ch | study"
c <- "bmi * ch - 1 | study"
d <- "bmi * ch + 0 | study"
e <- "bmi:ch + 0 | study"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想提取两个字符串"bmi""ch",即所需的输出是c("bmi", "ch")

上面的字符串只是示例;要提取的字符元素可以是ch和之外的任何其他元素bmi。我正在寻找一个通用的解决方案,无需硬编码。

我努力了unlist(stringr::str_extract_all(a, "bmi|ch"))。但是,在这里我手动定义模式"bmi|ch"以实现所需的输出。因此,这不是一个通用的解决方案。

G. *_*eck 5

假设向量 v 在最后的注释中定义。然后我们可以使用指定的函数对其进行重叠。如果变量的数量始终相同,您可以交替使用 sapply 给出一个矩阵。

lapply(sub("\\|.*", "", v), function(x) all.vars(parse(text = x)))
Run Code Online (Sandbox Code Playgroud)

给予:

[[1]]
[1] "bmi" "ch" 

[[2]]
[1] "bmi" "ch" 

[[3]]
[1] "bmi" "ch" 

[[4]]
[1] "bmi" "ch" 

[[5]]
[1] "bmi" "ch" 
Run Code Online (Sandbox Code Playgroud)

笔记

a <- "bmi + ch | study"
b <- "bmi * ch | study"
c <- "bmi * ch - 1 | study"
d <- "bmi * ch + 0 | study"
e <- "bmi:ch + 0 | study"
v <- c(a, b, c, d, e)
Run Code Online (Sandbox Code Playgroud)