r - 从向量中提取字符元素

我有一组字符向量:

a <- "bmi + ch | study"
b <- "bmi * ch | study"
c <- "bmi * ch - 1 | study"
d <- "bmi * ch + 0 | study"
e <- "bmi:ch + 0 | study"

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

上面的字符串只是例子;要提取的字符元素可以是 chbmi 以外的任何其他元素。我正在寻找无需硬编码的通用解决方案。

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

最佳答案

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

lapply(sub("\\|.*", "", v), function(x) all.vars(parse(text = x)))

给予:

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

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

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

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

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

注意事项

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)

https://stackoverflow.com/questions/70551416/

相关文章:

c# - 如何将字符串拆分为包含前一个最后一个字符的两个字符的字符串数组?

javascript - 3 条件 - 三元条件链 JavaScript react

firebase - argumnet 类型 'Null Funcion(DataSnapshot)

julia - 如何在 Julia 中绘制复数?

rust - 错误处理、map_err 和错误类型转换

python - Julia 重新编码未定义

powershell - 对 Powershell 脚本中的所有错误调用函数

python - 绕过欧盟同意请求

javascript - 如何在 react 中更改 useState 的对象值?

haskell - haskell 中有包含字符串和列表的类型吗?